2017年大疆在线编程第三题

题目描述:

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 }

在控制台随便测了几个字符串。

 

欢迎提出不同的看法。

posted @ 2017-08-30 17:15  水中鱼的夏天  阅读(299)  评论(0编辑  收藏  举报