"aa" "aa"- 弹出两个 a ->-6ren">
gpt4 book ai didi

javascript - 如果在 JavaScript 中匹配,则从左到右弹出字符串

转载 作者:行者123 更新时间:2023-12-04 07:24:31 25 4
gpt4 key购买 nike

如果您看到两个连续的相同字符,则从左到右弹出它们,直到不能再弹出任何字符为止。
返回结果字符串。
让 str = "阿爸"
"abba"- 弹出两个 b -> "aa"
"aa"- 弹出两个 a -> ""
返回 ””
这是我迄今为止尝试过的:

function match(str){

for (let i = 0; i< str.length; i++){
if (str[i] === str[i+1]){
return str.replace(str[i], "");

}
}
};
match('abba');

它只删除一个 b。在第一个循环中,我希望它删除两个 b 并控制输出。其次,我希望剩下的两个 a 删除并控制台输出。此外,如果保持良好的时间复杂度,那就太好了。

最佳答案

使用 recursion .

function match(str){
if(str.length==1 || str=="") {
return str;
}
for (let i = 0; i< str.length-1; i++) {
if(str[i] === str[i+1] && i+2==str.length) {
return str.substr(0,i);
} else if(i+2==str.length) {
return str;
} else if (str[i] === str[i+1]) {
return match(str.substr(0,i)+str.substr(i+2,(str.length)-(i+2)));
}
}
};

console.log('aa = '+ match('aa'));
console.log('abba = '+ match('abba'));
console.log('abccba = '+ match('abccba'));
console.log('abdccba = '+ match('abdccba'));
console.log('aabdccba = '+ match('aabdccba'));
console.log('abdccbaa = '+ match('abdccbaa'));
console.log('abbac = '+ match('abbac'));
console.log('abbcc = '+ match('abbcc'));

关于javascript - 如果在 JavaScript 中匹配,则从左到右弹出字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68290075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com