设为首页收藏本站

八达网

 找回密码
 注册
查看: 929|回复: 15
打印 上一主题 下一主题

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

[复制链接]

1999

主题

0

好友

1万

积分

航母

跳转到指定楼层
1
发表于 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
  }
}


452

主题

0

好友

2592

积分

坦克

2
发表于 2014-1-18 22:57 |只看该作者
大师难道之前没听说过动态规划么
而且这个解法 如果不是bing是woodangel呢?
2861316437
2836235853
回复

使用道具 举报

0

主题

0

好友

4万

积分

光明执政官

3
发表于 2014-1-19 01:49 |只看该作者
大师快想想,如果是woodangel怎么办,有两个o啊,怎么办怎么办
回复

使用道具 举报

24

主题

1

好友

2万

积分

大和

4
发表于 2014-1-19 02:25 来自手机 |只看该作者
一样的吧。case里有两个变量同时加就好了。。有多少个重复都一样吧。。
回复

使用道具 举报

114

主题

1

好友

2495

积分

坦克

5
发表于 2014-1-19 02:45 |只看该作者
吊丝看不懂,只有干捉急。
回复

使用道具 举报

895

主题

0

好友

2万

积分

大和

8da top SB

6
发表于 2014-1-19 03:35 |只看该作者
一样的吧。case里有两个变量同时加就好了。。有多少个重复都一样吧。。
回复

使用道具 举报

bdgfaa11 该用户已被删除
7
发表于 2014-1-19 08:16 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

10

主题

0

好友

8838

积分

大象

8
发表于 2014-1-19 08:29 |只看该作者

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

使用道具 举报

151

主题

0

好友

1万

积分

航母

9
发表于 2014-1-19 09:08 |只看该作者
大师快想想,如果是woodangel怎么办,有两个o啊,怎么办怎么办
回复

使用道具 举报

23

主题

0

好友

4万

积分

大和

10
发表于 2014-1-19 09:53 |只看该作者
牛逼你妈个蛋,傻B。还递归,递你脑袋驴腚眼子的归。
现在码农平均工资这么低,都是你这种傻B拖的后腿
天天上CSDN的蠢B
aaaa.jpg
回复

使用道具 举报

120

主题

2

好友

10万

积分

黑暗执政官

11
发表于 2014-1-19 12:48 |只看该作者
大师快想想,如果是woodangel怎么办,有两个o啊,怎么办怎么办
回复

使用道具 举报

14

主题

0

好友

1万

积分

航母

12
发表于 2014-1-19 13:25 |只看该作者
minker 发表于 2014-1-19 02:25
一样的吧。case里有两个变量同时加就好了。。有多少个重复都一样吧。。

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

使用道具 举报

15

主题

1

好友

1601

积分

坦克

13
发表于 2014-1-19 15:08 |只看该作者

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

使用道具 举报

351

主题

4

好友

6万

积分

仲裁者

14
发表于 2014-1-19 15:51 |只看该作者
这牛在哪里?即使不会编程的人也知道先把bing全部拿下来然后做排列组合啊
回复

使用道具 举报

174

主题

2

好友

4万

积分

仲裁[复制]

15
发表于 2014-1-19 17:43 |只看该作者
大师快想想,如果是woodangel怎么办,有两个o啊,怎么办怎么办
回复

使用道具 举报

24

主题

1

好友

2万

积分

大和

16
发表于 2014-1-19 22:29 来自手机 |只看该作者
3615429KKG 发表于 2014-1-19 13:25
case里有2个变量就行了? 没看懂

case o里面
numo2+=numo1
numo1+=numw
就行了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|八达网    

GMT+8, 2025-11-26 05:27

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部