我嘗試解決字串是否為等值線圖如下:
我不知道為什么我的代碼不起作用。請有人能幫忙解釋一下原因嗎?
等值線圖沒有連續或不連續的重復字母。
我曾嘗試: 1- 將字串轉換為小寫并使其成為陣列。2- 如果字串為空,則創建一個 if 檢查以回傳 true。3- 通過陣列運行 for 回圈并比較每個字母的 firstIndex 和 lastIndex。如果第一個實體和最后一個實體不相同,則字串不能是等值線圖,因此回傳 false。??
function isIsogram(str){
str = str.toLowerCase();
let text = str.split("");
if (text.length === 0) {
return true;
}
for (let i = 0; i < text.length; i ) {
if ( text.indexOf(text[i]) !== text.lastIndexOf(text[i]) ){
return false;
} else {
return true;
}
}
}
uj5u.com熱心網友回復:
一個簡單的更改應該可以解決問題。您現有的函式只考慮第一個字符。然后這將跳過字串中的任何重復字符,例如,它為 'abb' 回傳 true,這當然是不正確的。
最好繼續到回圈結束,只有在我們確定沒有重復字符時才回傳 true。
function isIsogram(str){
str = str.toLowerCase();
let text = str.split("");
if (text.length === 0) {
return true;
}
for (let i = 0; i < text.length; i ) {
if (text.indexOf(text[i]) !== text.lastIndexOf(text[i]) ){
return false;
}
}
return true;
}
const testInputs = ['abb','aab','aba','abc','abcdz'];
testInputs.forEach(input => console.log(`isIsogram(${input}): ${isIsogram(input)}`));
這是另一個實作,使用 aSet()來計算唯一字符。如果字串沒有重復字符,則設定大小給出的唯一字符數應與輸入字串長度相同。
function isIsogram(str){
return new Set(str).size === str.length;
}
const testInputs = ['abb','aab','aba','abc', 'abcdz'];
testInputs.forEach(input => console.log(`isIsogram(${input}): ${isIsogram(input)}`));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/355592.html
標籤:javascript 数组 细绳 for循环 指数
上一篇:如果多個相同資料匹配,如何回圈?
