Definicja
Ranga słowa jest definiowana jako pozycja słowa, gdy wszystkie możliwe kombinacje (lub układy) jego liter są ułożone alfabetycznie, jak w słowniku, bez względu na to, czy słowa są znaczące, czy nie.
Rozważmy te dwa słowa - „niebieski” i „widziany”. Na początek piszemy wszystkie możliwe układy liter tych słów w kolejności alfabetycznej:
"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"
Teraz spójrzmy od lewej strony i znajdź pozycję potrzebnych nam słów. Widzimy, że słowo „niebieski” znajduje się na 4 pozycji, a „widziany” na 10 pozycji. Zatem ranga słowa „niebieski” wynosi 4, a ranga „widziany” to 10. Jest to ogólny sposób obliczania rangi słowa. Upewnij się, że zaczynasz liczyć tylko od 1.
Zadanie
Twoim zadaniem jest napisanie kodu, który przyjmie dowolne słowo jako dane wejściowe i wyświetli jego pozycję. Ranga powinna być wynikiem. Uważaj na słowa zawierające powtarzające się litery.
Przykłady
"prime" -> 94
"super" -> 93
"bless" -> 4
"speech" -> 354
"earth" -> 28
"a" -> 1
"abcd" -> 1
"baa" -> 3
Możesz założyć, że dane wejściowe są całkowicie pisane małymi literami, a dane wejściowe będą zawierać tylko znaki alfabetyczne . Również jeśli zostanie wprowadzona spacja lub niepoprawny ciąg, możesz zwrócić cokolwiek.
Punktacja
To jest golf golfowy , więc wygrywa najkrótszy kod!
O(n log n)
lub krócej. (przepraszam, brak Pythona) Moje przesłanie (C ++) zajmuje test 2.53s, aby rozwiązać test 14.
['h', 'e', 'l', 'l', 'o']
. W przeciwieństwie do 'hello'
?