1 回答
TA贡献1821条经验 获得超4个赞
您的代码中存在一些问题。
您没有比较 if 子句中的正确内容。你在比较同样的事情。您需要检查下一个字符代码索引是否大于您当前的索引。
您会在第一个字符之后立即返回,因为您在不循环遍历值的情况下从顶部返回 true。
确保在循环时注意,最大的问题是您只是一遍又一遍地直接比较相同的字符,因为您不再担心正在检查的字符的索引。
如果下一个字符代码小于当前返回false,我基本上会在您的函数中说,否则返回true。这只会在遍历整个字符串后返回 true。
function solve(s){
s = s.trim().split("").sort().join(""); // remove white spaces, split to sort and then join again
for (let i = 0; i < s.length - 1; i++) {
if ((s.charCodeAt(i + 1) - s.charCodeAt(i)) !== 1) {
return false;
}
}
return true;
}
console.log(solve('abcdef')); //true
console.log(solve('afew')); //false
console.log(solve('defghijklmn')); //true
console.log(solve('lkjsadf')); //false
console.log(solve('123456')); //true
console.log(solve('123abc')); //true
console.log(solve('abc123')); //false
console.log(solve('abd')); //false
console.log(solve('abbc')); //false
console.log(solve('abc')); //true
console.log(solve('dabc')); // true
添加回答
举报