- UID
- 961
- 帖子
- 4088
- 积分
- 13454
- 阅读权限
- 70
- 注册时间
- 2005-7-11
- 最后登录
- 2015-6-19
- 在线时间
- 5897 小时
|
本帖最后由 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
}
}
|
|