gpt4 book ai didi

ruby - 使用if子句在ruby中重复数字

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:55 26 4
gpt4 key购买 nike

我写了一段代码,当传递给方法的数字中有重复数字时返回false

no_repeat(2114567) #=> false

下面是代码。我找不到它有什么问题。请提出任何改进建议。

def no_repeat(x)
x = x.to_s.split('')
i = 0
while i < x.length
if x[i].to_s == x[i + 1]
false
end
i += 1
end
true
end

no_repeat(2114567) #=> true

最佳答案

false 不返回函数,除非它是函数的最后一个表达式;明确地返回它。

def no_repeat(x)
x = x.to_s.split('')
i = 0
while i < x.length
if x[i].to_s == x[i + 1]
return false # <--------
end
i += 1
end
true
end

no_repeat(2114567) # => false
no_repeat(1234) # => true

'12345'.each_char.each_cons(2).any? { |x, y| x == y }错误的'11345'.each_char.each_cons(2).any? { |x, y| x == y }是的

使用正则表达式的替代方法(捕获组、反向引用):

def no_repeat(x)
! (/(.)\1/ === x.to_s)
end

p11y 使用 each_cons 建议的另一种选择:

'12345'.each_char.each_cons(2).none? { |x, y| x == y }
# => true
'11345'.each_char.each_cons(2).none? { |x, y| x == y }
# => false

'12345'.each_char.each_cons(2).all? { |x, y| x != y }
# => true
'11345'.each_char.each_cons(2).all? { |x, y| x != y }
# => false

关于ruby - 使用if子句在ruby中重复数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25973826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com