Я пытаюсь подсчитать количество подобных префиксных строк для строки в Ruby. например; ввод «ababaa» должен выводить 11;Вложенные петли в Ruby
ababaa = 6
babaa = 0
abaa = 3
baa = 0
aa = 1
a = 1
у меня, насколько ниже код, используя вложенный цикл, чтобы пройти через каждый из указанных выше как массив, но это выглядит, как будто рубин в настоящее время выводит количество только первого объекта Array, "ababaa".
Решено, спасибо :)
def string_suffix(string)
num = 0
ary = []
string.length.times do
ary << string[num..string.length]
num = num + 1
end
result = 0
ary.each do |x| # ["ababaa", "babaa", "abaa", "baa", "aa", "a"]
x.chars.each_with_index do |c,index|
break unless c == string[index]
result = result + 1
end
end
return result
end
Я смотрел далеко и широко, и до сих пор не может решить эту проблему, он выглядит (окончательный, вложенная) массив разбивается после первой итерации «ary» Array и просто возвращает этот вывод.
Вы назначили задание здесь: 'if x = string [count]'? Потому что '=' является присваиванием, а не проверяет равенство. Таким образом, выражение 'if' будет' true' в любое время, когда значение 'string [count]' является правдивым, что в любое время отличное от нуля. – lurker
Нет, я этого не видел, спасибо. Результат все тот же, возвращая 6 – Harry
Вы также каждый раз обнуляете «результат» через цикл 'ary.each'. Поместите 'result = 0' * перед *' ary.each ... '. Кажется, что 'num' не используется ни для чего после первого цикла, поэтому' num = 0' не требуется. – lurker