我正在做一个非常简单的编码挑战。返回字符串的第n个字母。而且,在将此标记为重复之前,我已经有一些解决方案。而且,我知道通过编程,可能有很多方法可以达到相同的结果。但是我想知道以下解决方案的逻辑,可读性或语法是否有很大的不同。哪个被认为是有利的解决方案?在此示例中,我每三个执行一次。如果您有更好的解决方案,我希望看到。
function testcode(str){
let newstr = '';
for (let i=2; i<str.length; i+=3) {
newstr += str[i]
}
return newstr;
}
testcode('hellostackoverflow');
function testcode(str){
let newstr='';
for (let i=0; i<str.length; i++) {
if ((i+1)%3 === 0){
newstr += str[i];
}
}
return newstr;
}
testcode('hellostackoverflow');
我也尝试过使用正则表达式,但是如果不是3,就不会替换字符。
let str = "aaCaaCaaCaa";
let result = str.replace(/..(.)/g, "$1");
console.log(result);
//gives me CCCaa
答案 0 :(得分:0)
哪个将被视为最佳解决方案?
您的第一个。它在逻辑和语法上都很简单,因此可读性很高。
可能更重要的是,它也更有效:它仅需O(n/k)
个步骤(在您的示例中为k=3
),仅查看每三个索引/字符,而不是每个索引/字符({ {1}}。