为什么在这个函数的字符串中找不到`“az”`?
我想知道"a"
和"z"
在找到"a"
后是否在一个字符串中。我想了解为什么这不起作用:为什么在这个函数的字符串中找不到`“az”`?
def nearby_az(string)
i = 0
while i < string.length
if string[i] == "a" && string[i+1] == "z"
return true
else
return false
end
i += 1
end
end
我意识到有一个简单的方法来实现这一点。我不在寻找另一种解决方案。
这段代码只会在最开始时发现“az”。否则它会return false
。推迟return false
,直到你走完整个琴弦。
def nearby_az(string)
i = 0
while i < string.length -1
return true if string[i] == "a" && string[i+1] == "z"
i += 1
end
# we can only reach this line if the loop above does not return.
# if it doesn't, then the substring we seek is not in the input.
return false
end
nearby_az('baz') # => true
啊我明白了。谢谢,我会尽快接受答案。 – jgozal
就像一个笔记,你实际上不需要'return false'中的'return'。 –
@JustinWood:是的,我只是移动了原来的代码,以保持相似性。此外,有助于澄清。 –
是的,你也可以只返回true如果string.include? “AZ”。不幸的是,我无法实现这一点。 – jgozal
我想我会看到另一个腔,这个在你的左上前臼齿。 –
请注意,如果您一起寻找az,技术上za满足此要求。所以你也需要(a(?= z)| z(?= a))。如果不敏感是一个需求,你需要补充一点。 – engineerDave
什么是您可以在其中找不到“AZ”输入? –
尝试“jimmaz”或“baz”或“jimmazuja” – jgozal
您需要比“这不工作”更具体。当你期望'true'时,它是否返回'false',反之亦然,如果是的话,'string'的值是什么时候呢?我不相信你的代码应该引发一个异常,但是如果这是你的问题,你需要精确地说明异常是什么以及它发生了什么。你的代码非常类似于Ruby(你知道),所以在你开始工作之后,我建议你将它发布在[Code Review](http://codereview.stackexchange.com/questions/tagged/ruby)上以获得改进它的建议。 –