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 }

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

 

欢迎提出不同的看法。

转载于:https://www.cnblogs.com/shuizhongyu111/p/7454127.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值