Максимальное количество вхождений в переменной

Evgeny76

Client
Регистрация
11.09.2015
Сообщения
192
Благодарностей
85
Баллы
28
Помогите реализовать следующую задачу: есть переменная, в ней набор букв. Нужно определить какая буква встречается в переменной наибольшее количество раз.
Сейчас реализовал так:
беру первую букву алфавита, регуляркой беру все вхождения этой буквы, кидаю в список, считаю количество строк, добавляю в таблицу букву и количество вхождений. Данную операцию проделываю со всеми буквами. После чего сортирую таблицу по убыванию и беру первую строку.
Работает эта конструкция правильно, но долго. Для перебора всего алфавита уходит около 5 секунд.
Может можно как-то реализовать по другому?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Помогите реализовать следующую задачу: есть переменная, в ней набор букв. Нужно определить какая буква встречается в переменной наибольшее количество раз.
Сейчас реализовал так:
беру первую букву алфавита, регуляркой беру все вхождения этой буквы, кидаю в список, считаю количество строк, добавляю в таблицу букву и количество вхождений. Данную операцию проделываю со всеми буквами. После чего сортирую таблицу по убыванию и беру первую строку.
Работает эта конструкция правильно, но долго. Для перебора всего алфавита уходит около 5 секунд.
Может можно как-то реализовать по другому?
попробуй без отрисовки прогнать. Там должно быть минимум затрат времени.
Или в зеннопостере запусти. Увидишь разницу
 

Evgeny76

Client
Регистрация
11.09.2015
Сообщения
192
Благодарностей
85
Баллы
28
В проджеке вообще около минуты гоняет ( Я время указал в постере.
Дело в том что переменная большая, около 120000 символов.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Хочешь какой-то генератор слов замутить?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 606
Благодарностей
4 597
Баллы
113
Помогите реализовать следующую задачу: есть переменная, в ней набор букв. Нужно определить какая буква встречается в переменной наибольшее количество раз.
Сейчас реализовал так:
беру первую букву алфавита, регуляркой беру все вхождения этой буквы, кидаю в список, считаю количество строк, добавляю в таблицу букву и количество вхождений. Данную операцию проделываю со всеми буквами. После чего сортирую таблицу по убыванию и беру первую строку.
Работает эта конструкция правильно, но долго. Для перебора всего алфавита уходит около 5 секунд.
Может можно как-то реализовать по другому?
C#:
string str = "abcdabcabaccccc";

return str.GroupBy(x=>x).OrderBy(x=>x.Count()).Select(x=>x.Key).ToList().Last();
 
  • Спасибо
Реакции: Evgeny76 и nicanil

Evgeny76

Client
Регистрация
11.09.2015
Сообщения
192
Благодарностей
85
Баллы
28
11 кубиков, 1 таблицу и 1 список заменил тремя кубиками. Спасибо, doc !
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)