Javascript 最长的重复子字符串
我有一个程序可以找到输入字符串中最长的重复子字符串,但问题是,当答案中有两个最大长度的重复子字符串时,我只能得到其中一个 例如,对于字符串123b456k123m456j,答案是123,而答案是123和456 我能解决这个问题吗?如果你知道怎么做,请回答我的问题Javascript 最长的重复子字符串,javascript,string,longest-substring,Javascript,String,Longest Substring,我有一个程序可以找到输入字符串中最长的重复子字符串,但问题是,当答案中有两个最大长度的重复子字符串时,我只能得到其中一个 例如,对于字符串123b456k123m456j,答案是123,而答案是123和456 我能解决这个问题吗?如果你知道怎么做,请回答我的问题 let s=prompt('Enter string'); 函数substr(str、begin、end){ 让结果=”; for(让i=begin;i
let s=prompt('Enter string');
函数substr(str、begin、end){
让结果=”;
for(让i=begin;iresult.length){
结果=p;
}
}
返回结果;
}
警报(lrs)代码>尝试用以下内容替换功能Los
function lrs(str) {
const suffixes = [];
for (let i = 0; i < str.length; i++) {
suffixes.push(substr(str, i, str.length));
}
suffixes.sort();
let result = [];
let res = [];
let lastLongestSubStrLen = 0;
for (let i = 0; i < str.length - 1; i++) {
const p = lcp(suffixes[i], suffixes[i + 1]);
if (lastLongestSubStrLen <= p.length) {
result.push(p);
lastLongestSubStrLen = p.length;
continue;
}
}
return result;
功能lrs(str){
常量后缀=[];
for(设i=0;i
const lrs=(s)=>s.match(/(.+)(?=.*\1)/g)
.filter((x,u,a)=>!a.some((y)=>x.length console.log(lrs('123b456k123m456j');
我真的很喜欢这种基于regexp的方法(+1)!但在使用它之后,我发现它将失败,并使用以下字符串:“123456k123m3456j”。它将返回[“123”,“456”]。(我更正了我原来的评论。)这看起来有点吓人。谢谢你的回答!@cars10m为我的回答添加了一个更新。哇,你已经得到了我的支持票-非常令人印象深刻!谢谢。我会考虑你所有的建议。效果非常好!非常感谢!