Определение
Ранг слова определяется как позиция слова, когда все возможные перестановки (или расположения) его букв расположены в алфавитном порядке, как в словаре, независимо от того, являются ли слова значимыми или нет.
Давайте рассмотрим эти два слова - «синий» и «увиденный». Для начала, мы бы написали все возможные расположения букв этих слов в алфавитном порядке:
"blue": "belu","beul","bleu","blue","buel","bule","eblu","ebul","elub","elbu","eubl",
"eulb","lbeu","lbue","lebu","leub","lube","lueb","ubel","uble","uebl","uelb",
"ulbe","uleb"
"seen": "eens","eesn","enes","ense","esen","esne","nees","nese","nsee","seen",
"sene","snee"
Теперь давайте посмотрим слева и найдем расположение нужных нам слов. Мы видим, что слово «синий» находится на 4-й позиции, а «видимый» - на 10-й. Таким образом, ранг слова «синий» равен 4, а ранг «увиденного» - 10. Это общий способ вычисления ранга слова. Убедитесь, что вы начинаете считать только с 1.
задача
Ваша задача - написать код, который будет принимать любое слово и отображать его рейтинг. Ранг должен быть выходным. Будьте осторожны со словами, содержащими повторяющиеся буквы.
Примеры
"prime" -> 94
"super" -> 93
"bless" -> 4
"speech" -> 354
"earth" -> 28
"a" -> 1
"abcd" -> 1
"baa" -> 3
Вы можете считать ввод полностью строчными, и ввод будет состоять только из буквенных символов . Также, если введено пустое место или неверная строка, вы можете вернуть что угодно.
счет
Это код-гольф , поэтому выигрывает самый короткий код!
O(n log n)
или меньше. (извините, нет Python) Моя заявка (C ++) занимает 2,53 секунды для решения теста 14.
['h', 'e', 'l', 'l', 'o']
в отличие от 'hello'
?