gpt4 book ai didi

javascript - 检查字符串中字符的 ASCII 码值是否大于或小于前一个字符的 ASCII 码值 - JavaScript

转载 作者:行者123 更新时间:2023-11-30 14:00:15 24 4
gpt4 key购买 nike

codewars 上尝试这个问题.

如果字符串中的字符按顺序出现,该函数应返回 true。

For example:

solve("abc") = True, because it contains a,b,c

solve("abd") = False, because a, b, d are not consecutive.

solve("dabc) = True, because it contains a, b, c, d

solve("abbc") = False, because b does not occur once.

solve("v") = True

我的想法是检查字符串中下一个字符的ASCII码值是否大于前一个字符的ASCII码值。

如果是这种情况,则返回 true。否则,返回假。

我有:

function solve(s){
for (let i = 0; i < s.length; i++) {
let character = s[i];
//if character ASCII value is > than the ASCII value of character before it
if (character.charCodeAt(0) > /*previous character.charCodeAt(0));*/ ) {
return true
}
else {
return false;
}
}
}

但是如你所见,我不知道如何与之前的 Angular 色进行比较。

最佳答案

您的代码中存在一些问题。

  1. 您没有在 if 子句中比较正确的内容。你在比较同一件事。您需要检查下一个字符代码索引是否大于当前字符代码索引。

  2. 您在第一个字符之后立即返回,因为您在顶部返回 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

关于javascript - 检查字符串中字符的 ASCII 码值是否大于或小于前一个字符的 ASCII 码值 - JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56428554/

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