Подсчитайте максимальное количество параллельных букв с Ruby - PullRequest
1 голос
/ 15 января 2012

как мы можем получить максимальное количество букв, расположенных рядом?

Например, если мы посчитаем каждую букву максимум рядом a:

"Muhahaha, hello world!!!!! Aaaaaaaa" # => 7
"fuu" # => 0
"foobar" # => 1
"aaa bbb ccc" # => 3
"aa bb cc aaaaa ff" # => 5

Я использую Ruby 1.9.3. Согласно классу String, я не думаю, что уже есть метод, который может сделать это. Может быть, класс Regexp мог бы быть более полезным.

Как вы думаете, есть сексуальный способ сделать это? Спасибо за любые предложения.

Ответы [ 2 ]

5 голосов
/ 15 января 2012

Мой путь:

"Muhahaha, hello world!!!!! Aaaaaaaa".scan(/a+/).max.length #=> 7

или, если это не сработает, то (но так должно быть)

"Muhahaha, hello world!!!!! Aaaaaaaa".scan(/a+/).sort.last.length #=> 7
1 голос
/ 15 января 2012
# returns the longest stretch of the same word character
str = "Muhahaha, hello world!!!!! Aaaaaaaa"
str.scan(/\w/).to_set.map { |c| str.scan(/#{c}+/).max }.sort_by(&:length).last.length
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...