JavaScript删除相邻的重复字母[重复]
Posted
技术标签:
【中文标题】JavaScript删除相邻的重复字母[重复]【英文标题】:JavaScript remove adjacent duplicate letters [duplicate] 【发布时间】:2021-07-03 21:13:12 【问题描述】:我见过一些这样的例子,但它们要么不在 JS 中,要么效率极低(就像我现在的解决方案一样)。基本上我想要做的是一个函数,它接受一个字符串并删除任何相邻且相同的字符。例如,“jjjavvvaaassscript”会变成“javascript”。我不想要的是它会变成“javscript”(消除第二个“a”)。我确实有一个如下所示的工作功能,但这绝对是可怕的,我正在寻找一种更好的方法来做到这一点。
function removeChar(text, index)
return(text.slice(0,index)+text.slice(index+1));
function removeDuplicates(text)
var prevChar = "";
var finalT = text;
var i = 0;
for(i = 0; i < text.length; i++)
if(finalT.charAt(i) == prevChar)
if(i > finalT.length)
return finalT;
else
finalT = removeChar(finalT, i);
i--;
else
prevChar = finalT.charAt(i);
return finalT;
任何帮助将不胜感激!
【问题讨论】:
【参考方案1】:我会使用正则表达式来匹配一个字符,然后尽可能多次地反向引用它(例如,它将匹配jjj
,或a
,或vvv
,等等),然后用一个字符替换:
const removeDuplicates = str => str.replace(/(.)\1*/g, '$1');
console.log(removeDuplicates('jjjavvvaaassscript'));
如果您必须手动迭代更多,类似于您当前的方法,那么:
const removeDuplicates = str =>
let lastChar = str[0];
let finalT = str[0];
for (const char of str.slice(1))
if (lastChar !== char) finalT += char;
lastChar = char;
return finalT;
;
console.log(removeDuplicates('jjjavvvaaassscript'));
【讨论】:
也许\1+
会更好,因为您不需要替换没有重复的字符以上是关于JavaScript删除相邻的重复字母[重复]的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode刷题(160)~删除字符串中的所有相邻重复项