我在做一個在線課程:理解「下一個」紅寶石 - 比較方案
編寫需要一個字符串並返回
true
如果字母"z"
的"a"
後的三個字母出現的方法。您可能會認爲該字符串只包含小寫字母。
這是給出瞭解決方案:
def nearby_az(string)
i = 0
while i < string.length
if string[i] != "a"
i += 1
next
end
j = i + 1
while (j < string.length) && (j <= i + 3)
if string[j] == "z"
return true
end
j += 1
end
i += 1
end
return false
end
該解決方案似乎過於複雜了我。具體來說,我不明白爲什麼需要next
。我想知道如果有人能幫我理解這個功能。
我的解決方案似乎與我試圖測試工作爲好,但我想知道,如果其他的解決方案是更好的,如果我的解決辦法有,我只是還沒有碰到過的問題還沒有。
def nearby_az(string)
i = 0
while i < string.length
while string[i] != "a"
i += 1
end
if string[i + 1] == "z" || string[i + 2] == "z" || string[i + 3] == "z"
return true
else
i += 1
end
return false
end
end
當你獲得的經驗與紅寶石,你會發現,這個問題可以通過使用正則表達式(「正則表達式」)最容易回答。如果'str'是你的字符串,你可以直接寫'str =〜/ a。{,2} z /'。它的內容是:「匹配一個'a',後跟任意字母('。'),零和兩次之間('{,2}'或'{0,2}'),然後是'z'」。 –