Javascript 获取字符串中重复子字符串的列表
有一个javascript字符串变量源 找到长度为20的所有重复子串的最简单方法是什么(可以,如果它们交叉,也可以,如果甚至满足21的子串,它们将在答案中重复两次,从0到20,从1到21) 最简单的方法是使用Javascript 获取字符串中重复子字符串的列表,javascript,string,performance,loops,substring,Javascript,String,Performance,Loops,Substring,有一个javascript字符串变量源 找到长度为20的所有重复子串的最简单方法是什么(可以,如果它们交叉,也可以,如果甚至满足21的子串,它们将在答案中重复两次,从0到20,从1到21) 最简单的方法是使用 var len=20; var sourceLen=source.length; for (var i=0; i<sourceLen; i++){ for (var j=i+1; j<sourceLen; j++){ if (source.substri
var len=20;
var sourceLen=source.length;
for (var i=0; i<sourceLen; i++){
for (var j=i+1; j<sourceLen; j++){
if (source.substring(i,i+len)==source.substring(j,j+len)){
console.log(source.substring(i,i+len));
}
}
}
var len=20;
var sourceLen=source.length;
对于(var i=0;i
此外,我还考虑使用.indexOf,只使用一个for循环就可以得到相同的结果
indexOf
仍然在内部循环字符串。当然,我们不知道他们是否实现了;这可能值得一试
有没有更聪明的方法来获取字符串中长度为20的重复字符串的列表
使用一组具有快速查找时间的所有子字符串
function dupls(source, len, callback) {
var subsSet = {};
for (var i=0, l=source.length-len; i<l; i++) {
var sub = source.slice(i, len);
if (sub in subsSet) // or, possibly better, subsSet[sub]===true
callback(sub);
else
subsSet[sub] = true;
}
}
dupls("…", 20, console.log.bind(console));
函数重复(源、len、回调){
var子集={};
对于(变量i=0,l=source.length-len;i