2017-03-05 27 views
-4

我試了下面的代碼,通過了很少的測試和失敗的其他人。試圖編寫一個程序,檢查一個字符串是否與javascript isico

function isIsogram(str) { 
    //... 
    var strArr = str; 
    for (var i = 0; i < strArr.length; i++) { 
     for (var j = 0; j < strArr.length; i++) { 
      if (strArr[i] == strArr[j]) { 
       return true 
      } else { 
       return false; 
      } 
     } 
    } 
} 
isIsogram("isaac"); 
+0

你介意告訴哪個測試失敗了嗎? – JJJ

+1

你的函數返回它執行的第一個比較。 'return'語句立即退出函數**。 – Pointy

+0

@JJJ它失敗了以下內容: aharevqxngkldib gsmdskpfwjxzonlbqrhatyveiuc otzbwulhpszmcayxgvjrnfed –

回答

0

在你incrementin i,不j第二個循環。另外,功能應該在比賽返回false,並應避免檢查strArr[i]與自己...

1

你必須排除目前的焦炭在代碼請檢查該

function isIsogram(str) { 
//... 
var strArr = str; 
for (var i = 0; i < strArr.length; i++) { 
    for (var j = 0; j < strArr.length; j++) { 
     if(i!=j){ 
      if (strArr[i] == strArr[j]) { 
       return false 
      } 
     } 
    } 
} 
return true; 
} 
0

您的解決方案:

function isIsogram(str) { 
 

 
var word = str.split(''); //split the word into an array 
 
for (var i = 0, j = 1; i < word.length - 1; i++, j++) { 
 
    if (word[i] == word[j]){//check if the character right after the current is the same 
 
           //as the current character 
 
    console.log('Not'); 
 
    return false;  //if it is - it's not an isogram 
 
    } 
 
} 
 
console.log('Isogram'); 
 
return true; //loop has passed - it's an isogram 
 
} 
 

 
isIsogram("isaac"); 
 
isIsogram("isac");

Simplier方法:

function isIsogram(word){ 
 
    word = word.split(''); 
 
    word.every((v,i) => v != word[i-1]) ? console.log('Isogram') : console.log('Not'); 
 
} 
 

 
isIsogram('isaac'); 
 
isIsogram('isac');

0

永遠不要忘記正則表達式有多麼強大!

function isIsogram(str){ 
    return !/(\w).*\1/i.test(str) 
} 
相關問題