woodangel 发表于 2014-1-18 21:33

十分牛逼的程序这个程序考题居然有牛人一次遍历就解决

本帖最后由 woodangel 于 2014-1-18 21:42 编辑

例如有一个字符串"iinbinbing",截取不同位置的字符‘b’、‘i’、‘n’、‘g’组合成单词"bing"。若从1开始计数的话,则‘b’ ‘i’ ‘n’ ‘g’这4个字母出现的位置分别为(4,5,6,10) (4,5,9,10),(4,8,9,10)和(7,8,9,10),故总共可以组合成4个单词”bing“。

  咱们的问题是:现给定任意字符串,只包含小写‘b’ ‘i’ ‘n’ ‘g’这4种字母,请问一共能组合成多少个单词bing?

这个程序题不难我开始就考虑用递归函数解决不过要遍历N次
后来看了一个程序牛人1次遍历就解决了问题,速度是原来的N倍。实在是吊。

public class Test4
{     static char[] ch;   
  static int index=0;   
static int b_num=0;   
  static int i_num=0;   
static int n_num=0;   
  static int num=0;         
  public static void main(String[] args)
{      
            System.out.println(getNum("iinbinbinginng"));  
   }         
public static int getNum(String str)
{   
     ch=str.toCharArray();   
      for (int i = 0; i < ch.length; i++)
{            
switch (ch)
{            
case 'b':               
  b_num++;            
    break;            
case 'i':              
   i_num+=b_num;              
   break;            
case 'n':               
n_num+=i_num;               
break;            
case 'g':               
  num+=n_num;               
  break;            
default:               
  break;           
  }         
}         return num
  }
}


rolin 发表于 2014-1-18 22:57

大师难道之前没听说过动态规划么
而且这个解法 如果不是bing是woodangel呢?

LOY 发表于 2014-1-19 01:49

大师快想想,如果是woodangel怎么办,有两个o啊,怎么办怎么办

minker 发表于 2014-1-19 02:25

一样的吧。case里有两个变量同时加就好了。。有多少个重复都一样吧。。

小小白 发表于 2014-1-19 02:45

吊丝看不懂,只有干捉急。

Nal_TonY 发表于 2014-1-19 03:35

一样的吧。case里有两个变量同时加就好了。。有多少个重复都一样吧。。

bdgfaa11 发表于 2014-1-19 08:16

ama_go 发表于 2014-1-19 08:29


大师快想想,如果是woodangel怎么办,有两个o啊,怎么办怎么办

stonyfield 发表于 2014-1-19 09:08

大师快想想,如果是woodangel怎么办,有两个o啊,怎么办怎么办

Neutrino 发表于 2014-1-19 09:53

牛逼你妈个蛋,傻B。还递归,递你脑袋驴腚眼子的归。
现在码农平均工资这么低,都是你这种傻B拖的后腿
天天上CSDN的蠢B

IROI 发表于 2014-1-19 12:48

大师快想想,如果是woodangel怎么办,有两个o啊,怎么办怎么办

3615429KKG 发表于 2014-1-19 13:25

minker 发表于 2014-1-19 02:25 static/image/common/back.gif
一样的吧。case里有两个变量同时加就好了。。有多少个重复都一样吧。。

case里有2个变量就行了? 没看懂

hydranana 发表于 2014-1-19 15:08


靠这几行代码就写出了个woodangel操作系统。:lol

MakubeX 发表于 2014-1-19 15:51

这牛在哪里?即使不会编程的人也知道先把bing全部拿下来然后做排列组合啊

羊羊羊 发表于 2014-1-19 17:43

大师快想想,如果是woodangel怎么办,有两个o啊,怎么办怎么办

minker 发表于 2014-1-19 22:29

3615429KKG 发表于 2014-1-19 13:25
case里有2个变量就行了? 没看懂

case o里面
numo2+=numo1
numo1+=numw
就行了。
页: [1]
查看完整版本: 十分牛逼的程序这个程序考题居然有牛人一次遍历就解决