转自:http://blog.csdn.net/hqsary/article/details/77914649
自己做个记录。
给定一个字符串s,请计算输出含有连续两个s作为子串的最短字符串。注意两个s可能有重叠部分。例如,"ababa"含有两个“aba".
输入描述:
输入包括一个字符串s,字符串长度length(1<=length<=50),s中每个字符都是小写字符。
输出描述:
输出一个字符串,即含有连续两个s作为子串的最短字符串。
示例1
输入 abracadabra
输出 abracadabracadabra
输入描述:
输入包括一个字符串s,字符串长度length(1<=length<=50),s中每个字符都是小写字符。
输出描述:
输出一个字符串,即含有连续两个s作为子串的最短字符串。
示例1
输入 abracadabra
输出 abracadabracadabra
采用js实现。思路:看了好久,发现本题的意思其实就是判断从最后一位开始算,存在多少位和头开始的相应位数相当。然后拼接就可以了。
比如
abracadabra就有后四位abra和前面四位abra相等,只需要寻找出相等的位数,连接就ok了。
比如
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);