2016-11-14 43 views
-1

指數我寫的,需要一個字符串,如果字母「Z」中出現三個字母一個「A」後返回true的方法。您可能會認爲該字符串只包含小寫字母。我收到錯誤的結果比較兩個字母

function nearBy_az(string) { 
    var i 
    var j 
    len = string.length 
    for (i = 0; i < len; i++) { 
     for (j = i + 1; j < len; j++) { 
      if (string[i] === "a" && string[j] === "z" && j - i <= 3) { 
       return true 
      } else { 
       return false 
      } 
     } 
    } 
} 
+0

似乎是一個嵌套循環是一種錯誤的做法於該解決方案。並幫你一個忙,並使用分號。 – epascarello

+2

*「寫一個方法...」*:現在保持。你有問題或訂單? – trincot

+0

你已經包括了你所嘗試過的(這很好!),但沒有發生什麼錯誤或怎麼樣,甚至測試數據來重現問題。 – ssube

回答

0

你只是簡單地使用正則表達式,如果你使用正則表達式很好。 這是你可以做的。

var strCondition = new RegExp(/(.*?|^)a[a-z]{0,2}z/); 
 

 
var string = "az"; 
 
console.log(strCondition.test(string)); 
 
string = "adz"; 
 
console.log(strCondition.test(string)); 
 
string = "abcz"; 
 
console.log(strCondition.test(string)); 
 
string = "abcdz"; 
 
console.log(strCondition.test(string)); 
 
string = "abcdez"; 
 
console.log(strCondition.test(string));

//var inputString = "abz"; 
 

 
function verifyString(inputString) { 
 
    var exist = false; 
 

 
    debugger; 
 
    for (var idx = 0; idx < inputString.length; idx++) { 
 
    if (inputString.charAt(idx) === 'a') { 
 
     var subStr = inputString.substr(idx, 4); 
 
     if (subStr.indexOf('z') !== -1) { 
 
     exist = true; 
 
     } 
 
    } 
 
    } 
 
    return exist; 
 
} 
 

 
var inputString = "az"; 
 
console.log(verifyString(inputString)); 
 
inputString = "adz"; 
 
console.log(verifyString(inputString)); 
 
inputString = "abcz"; 
 
console.log(verifyString(inputString)); 
 
inputString = "abcdz"; 
 
console.log(verifyString(inputString)); 
 
inputString = "abcdez"; 
 
console.log(verifyString(inputString));

+0

謝謝Sreekanth!除了if(substr.indexOf('z')!== -1){return true}之外,幾乎所有東西都可以理解不等於最後一個字符?如果它不等於最後一個字符?對不起,我是編碼方面的新人,最近開始了。 –

+0

謝謝你的RegExp方法,我曾經使用它,正好看到有人使用反元音方法。但是這裏(。*?| ^)這些符號很難預測。我的意思是我讀了MDN JavaScript如何使用RegExp,但沒有描述你在這裏使用了什麼。你能解釋一下你是如何選擇這些角色的?謝謝!基本上它是 –

+0

。*?意味着在'a'之前匹配任何字符,^表示'a'是第一個字符。從技術上講,(。*?| ^)a意思是匹配'a',如果它存在於中間或者匹配'a',那麼它就在開頭。 – Sreekanth