gpt4 book ai didi

javascript - 查找字符串中缺失的字母 Javascript

转载 作者:行者123 更新时间:2023-11-28 18:40:11 25 4
gpt4 key购买 nike

因此输入是按字母顺序排列的一串字母。那里的某个地方,有一封信不见了。我必须归还丢失的信。我在下面发布了我的代码。它得到了很好的评论,这些评论比我在这里能解释得更好。我将在下面解释我的问题。

function fearNotLetter(str) {
var charCodes;
var test;
var offendingNumber;
var numToString;

// i starts at 1, increments to str.length
for (var i = 1; i < str.length; i++) {
// Char code of last letter minus char code of second last letter,
// Char code of second last letter minus char code of third last letter, etc.
// Repeat on a loop and set result equal to test each time.
test = str.charCodeAt(str.length - [i]) - str.charCodeAt(str.length - [i + 1]);
console.log(test);

// If charCode A - charCode B == 1, then letters are in order
// alphabetically and test returns 1.

// If charCode A - charCode B > 1, then letters missing from string.

// So if difference between char codes is more than 1,
// return missing char code and convert to string.
if (test > 1) {
offendingNumber = str.charCodeAt(str.length - [i]);
numToString = String.fromCharCode(offendingNumber);
console.log(numToString);
} // End of if.
// If no letters missing from input, return undefined.
else {
return undefined;
} // End of else.
} // End of loop.
} // End of function.

// Here is the input str
fearNotLetter("abce");

问题就在这里。如果我输入“abce”,我会丢失 d。 console.log(test) 返回 2,我可以得到丢失的字母。太棒了。

如果我输入“abcef”(与之前相同的字符串,最后加上 f),我仍然缺少 d。测试返回 1,好像没有丢失字母,但 d 仍然丢失。

仅当缺少的字符适合字符串中的倒数第二个空格时,我的程序才有效。 “lmnp”有效,但“lmnpqrs”无效。

我的循环显然是在迭代字符串中的每个字符,因为它可以从长字符串“abcdefghijklmnopqrstuvxyz”中找出丢失的 w。当缺少的字符后面有多个字符时,为什么我的循环会崩溃?它的行为就好像我在循环之外调用 console.log(test) ,并且只返回最后一次迭代。我尝试将测试推送到数组,但这没有任何帮助。

最佳答案

有几个问题:您的索引是困惑的(即相差一); undefined 的返回应该在循环之外,而不是在循环内;您在不应该使用的地方使用了 str.length;当你不应该将迭代变量放入括号时:

function fearNotLetter(str) {
var difference;
var missingCharCode;

// i starts at 1, increments to str.length
for (var i = 1; i < str.length; i++) {

// Char code of last letter minus char code of second last letter,
// Char code of second last letter minus char code of third last letter, etc.
// Repeat on a loop and set result equal to test each time.
difference = str.charCodeAt(i) - str.charCodeAt(i - 1);

// If charCode A - charCode B == 1, then letters are in order
// alphabetically and test returns 1.

// If charCode A - charCode B > 1, then letters missing from string.

// So if difference between char codes is more than 1,
// return missing char code and convert to string.
if (difference > 1) {
missingCharCode = str.charCodeAt(i) - 1;
return String.fromCharCode(missingCharCode);
} // End of if.
} // End of loop.

return undefined;
} // End of function.

关于javascript - 查找字符串中缺失的字母 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36241309/

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