2014-10-21 4 views
1

Может кто-нибудь объяснить этот код? Я не понимаю, а именно:Пожалуйста, объясните этот метод Ruby, который возвращает количество повторных букв.

elsif idx2 > idx1 
    is_repeat = true 
    end 
  1. Почему мы сравнения показателей, чтобы определить, если письмо было повторено ?
  2. Также, что делает «следующий» термин внутри оператора if?

Полный код приведен ниже:

# Write a method that takes in a string and returns the number of 
# letters that appear more than once in the string. You may assume 
# the string contains only lowercase letters. Count the number of 
# letters that repeat, not the number of times they repeat in the 
# string. 
# 
# Difficulty: hard. 

def num_repeats(array) 
    repeats = 0 

    idx1 = 0 
    while idx1 < array.length 
    is_repeat = false 
    idx2 = 0 
    while idx2 < array.length 
     if array[idx1] != array[idx2] 
     idx2 += 1 
     next 
     elsif idx2 < idx1 
     # will have previously counted this repeat 
     break 
     elsif idx2 > idx1 
     is_repeat = true 
     end 

     idx2 += 1 
    end 

    if is_repeat 
     repeats += 1 
    end 

    idx1 += 1 
    end 

    return repeats 
end 
+0

Голосование закрывается по двум причинам: во-первых, хорошие ответы будут слишком длинными для этого формата (Q & A). Во-вторых, в одном есть два вопроса. (Второе - «что делает« следующий »[сделать?]».) Пожалуйста, разделите свой вопрос на два более конкретных вопроса. –

+0

Похоже, что вы вставили домашнее задание здесь :(Вопрос по этой причине должен быть закрыт. –

ответ

1

Если оба условия до (if idx2 < array.length и elsif idx2 < idx1) являются false но idx2 > idx1 является true, чем установить локальную переменную is_repeat в true ...

Смежные вопросы