京东-测试开发笔试

来源:互联网 发布:java外卖cms 编辑:程序博客网 时间:2024/06/13 09:18
转自:http://blog.csdn.net/hqsary/article/details/77914649
自己做个记录。

给定一个字符串s,请计算输出含有连续两个s作为子串的最短字符串。注意两个s可能有重叠部分。例如,"ababa"含有两个“aba".
输入描述:
输入包括一个字符串s,字符串长度length(1<=length<=50),s中每个字符都是小写字符。
输出描述:
输出一个字符串,即含有连续两个s作为子串的最短字符串。
示例1
输入   abracadabra
输出   abracadabracadabra

采用js实现。思路:看了好久,发现本题的意思其实就是判断从最后一位开始算,存在多少位和头开始的相应位数相当。然后拼接就可以了。
比如
abracadabra就有后四位abra和前面四位abra相等,只需要寻找出相等的位数,连接就ok了。
代码实现:
          var str = "字符串";  var arr = [];  arr = str;  var temp;  var conunt=0;  for (var i = arr.length - 1; i >0; i--) {      var arr1=arr.slice(i,arr.length);      var arr2=arr.slice(0,arr.length-i);      if(arr1==arr2){          temp=arr1;                                       conunt++;      }  }  if(conunt==0){//采用count计数,如果为0.则该字符串没有相等的。则返回str+str      var temp2=str.concat(str);  }else {      var temp1=arr.slice(temp.length,arr.length);  var temp2=str.concat(temp1);  }  console.log(temp2);