八达网

标题: 十分牛逼的程序这个程序考题居然有牛人一次遍历就解决 [打印本页]

作者: 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
aaaa.jpg

作者: IROI    时间: 2014-1-19 12:48
大师快想想,如果是woodangel怎么办,有两个o啊,怎么办怎么办
作者: 3615429KKG    时间: 2014-1-19 13:25
minker 发表于 2014-1-19 02:25
一样的吧。case里有两个变量同时加就好了。。有多少个重复都一样吧。。

case里有2个变量就行了? 没看懂
作者: hydranana    时间: 2014-1-19 15:08

靠这几行代码就写出了个woodangel操作系统。
作者: 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
就行了。




欢迎光临 八达网 (https://www.8-da.com/) Powered by Discuz! X2.5