找到发生的数字符串中的我是新来的Ruby和solving IOI questions学习它。如何通过红宝石
样本输入文件的第一行是“O”的数目。如果它是1,那么它需要找到“IOI”,如果是2,则“IOIOI”等
第二个数字13讲述在第三行字符的数目。问题是找到'IOI'的发生次数。
下面的例子应该给4
我做的方法,使用if语句在一个while循环。但它给出了ioioi.rb:14: syntax error, unexpected keyword_end (SyntaxError)
的错误。我在while循环中试图找到前3个字符是否相等,如果它是增加一个count
。并删除第一个字符并重复该过程。
样品输入文件
1
13
OOIOIOIOIIOII
输出应该是
4
我班IOIOI
def self.frequency(file_name)
file = File.new(file_name, 'r').each_line.map(&:strip)
count = 0
o_str = file.shift # '1'
o_num = o_str.to_i
findme = "IO" * o_num + "I"
length = file.shift # '13'
input = file.join
while file.size > 0 do
if file[0..(2*o_num)].eql?(findme)
count +=
end
file = file[1..-1] # delete the first letter
end
count
end
count + = 1,推测是 –
在while语句后不需要''file = File.new(file_name,'r')。'each_line.map(&:strip)'' file = File.readlines(file_name)' – bjhaid
这个IOI链接不幸对讲英语的人不利。什么是IOI问题? –