如何检查数字是否包含红宝石中的其他数字?
例:
number1 = 1321
number2 = 2
如何检查数字 1 是否包含数字 2?
1321 contains 2 is true
你可以做这样的事情来返回 true 或 false
number1.to_s.include?(number2.to_s)
这是一个字符串问题,而不是数字问题。数字不包含其他数字。您需要将两者转换为字符串:
s1 = 1321.to_s # => "1321"
s2 = 2.to_s # => "2"
然后,只需使用 []
:
s1[s2] # => "2"
如果找到索引值,这将返回索引值,或者nil
:
s1["9"] # => nil
另一种方法是将数字转换为字符串,并使用 String#include?检查主字符串中是否存在子字符串:
number1 = 1321
number2 = 2
sn1 = number1.to_s
# => "1321"
sn2 = number2.to_s
# => "2"
"#{sn1} contains #{sn2} is #{sn1.include?(sn2)}"
# => "1321 contains 2 is true"
错误案例示例:
number1 = 1321
number2 = 9
sn1 = number1.to_s
# => "1321"
sn2 = number2.to_s
# => "9"
"#{sn1} contains #{sn2} is #{sn1.include?(sn2)}"
# => "1321 contains 9 is false"
>@meagar,它可以被视为一个数字问题(有点):
def number_in_number?(outer, inner)
test = 10**((inner < 2) ? 1 : Math.log10(inner).ceil.to_i)
while outer >= inner
return true if ((outer - inner) % test).zero?
outer /= 10
end
false
end
number_in_number?(1321, 2) #=> true
number_in_number?(1321, 32) #=> true
number_in_number?(1321, 4) #=> false
number_in_number?(1321, 1321) #=> true
number_in_number?(1321, 13211) #=> false
number_in_number?(543681321, 4368) #=> true
number_in_number?(543681321, 4367) #=> false