大家好,我有以下问题:
输入:
二
阿巴巴
AA
输出:
十一
三
说明:
对于第一种情况,字符串的后缀是“a babaa”、“babaa”、“a baa”、“baa”、“baa”、“a a”和“a”。这些字符串与字符串“ababaa”的相似度分别为6,0,3,0,1,1。因此答案是6+0+3+0+1+1=11。
对于第二种情况,答案是2+1=3。
这一部分可以工作,但是我的代码应该通过的一些测试没有。
这是我的密码
def input_data
#STDIN.flush
tries = gets.chomp
end
strings=[];
tries = input_data until (tries =~ /^[1-9]$/)
tries = tries.to_i
strings << input_data until (strings.count == tries)
strings.map do |x|
values = 0
current = x.chars.to_a
(0..x.length-1).map do |possition|
current_suffix = x[possition..-1].chars.to_a
(0..current_suffix.length-1).map do |number|
if (current_suffix[0] != current[0])
break
end
if ( current_suffix[number] == current[number] )
values = values+1
end
end
end
if (values != 0)
puts values
end
end
有什么建议吗??
最佳答案
gets
返回nil
,这不能chomp
ed。因此,您需要确保在调用chomp
之前处理实际字符串。ruby中一个常见的习惯用法是使用||=
操作符来设置一个变量,前提是它是nil。所以你会写:
tries = gets # get input
tries ||= '' # set to empty string if nil
tries.chomp! # remove trailing newline