题目描述:
Tom 是个热爱公司文化的大疆员工,他喜欢玩一个游戏:在一个字符串里找出dji的组合方案数。
输入:
输入会先给出需要测试的字符串数目,随后是字符串,字符串长度<10000。
输出:
方案个数。
样例输入:
1
ddiaiji
样例输出:
2
今天考试的时候由于没读懂第一题的意思,花了好久也耽误后面的答题,下来后就看了看后面没做的题。
感觉这道题熟悉样例输出的过程并不复杂,上手并不难,但选对合适的处理方法 很重要。分析的时候会发现又大量重复递进式的查找工作。所以应该想到递归。
我用的JavaScript写的,下面直接贴代码,没有处理输入的问题,也可以改用Java写。
1 function findDji(str){ 2 var count = 0; 3 if(str.indexOf('d')!= -1){ 4 var dIdx = str.indexOf('d'); 5 var str1 = str.slice(dIdx+1); 6 for (var i=0;i<str1.length ;i++ ) 7 { if(str1[i] =='j') 8 { 9 for (var j=i+1;j<str1.length;j++ ) 10 { 11 if (str1[j] == 'i') 12 { 13 count++; 14 } 15 16 } 17 18 19 } 20 } 21 var newStr = str.slice(str.indexOf('d')+1); 22 return count+findDji(newStr); 23 }else{ 24 return 0; 25 } 26 27 28 29 }
在控制台随便测了几个字符串。
欢迎提出不同的看法。