我正在 freecodecamp 上學習 JS,但遇到了一個問題。我正在創建一個回文檢查器。我的代碼幾乎可以作業。然而,只有一個詞沒有通過測驗,那就是幾乎omla。它不是回文,但我的代碼回傳 true。我已經嘗試了幾件事。甚至重寫了代碼并使用了 while 回圈,但似乎沒有任何幫助。freeCodecamp 網站上有一個解決方案,但我以不同的方式撰寫了代碼并且無法弄清楚我的錯誤。
這是我的代碼。
let reversedStr = [];
function palindrome(str) {
let d = str.replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
for (let i = d.length - 1; i >= 0; i--) {
reversedStr.push(d[i]);
}
for (let j = 0; j < str.length; j ) {
if (reversedStr[j] == d[j]) {
return true;
} else {
return false;
}
}
}
console.log(palindrome("almostomla"));
uj5u.com熱心網友回復:
if (reversedStr[j] == d[j]) {return true;只要字符在兩個索引處匹配,該行就會回傳。它不檢查其余的字符。
事實上,只要兩個索引中的字符不匹配,您就可以立即回傳。
還要注意reversedStr必須在函式內部。否則它將包含以前的值
function palindrome(str) {
let reversedStr = [];
let d = str.replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
for (let i = d.length - 1; i >= 0; i--) {
reversedStr.push(d[i]);
}
for (let j = 0; j < str.length; j ) {
if (reversedStr[j] !== d[j]) {
return false;
}
}
return true
}
console.log(palindrome("almostomla"));
console.log(palindrome("1221"));
uj5u.com熱心網友回復:
您的代碼在第一次匹配后回傳“真”或“假”——它檢查“a”是否等于“a”并回傳真。
僅當您發現重復的字母時,您才能從回圈內部回傳“false” ,否則在回圈結束后回傳 true 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/355988.html
標籤:javascript
