Définition
Le rang d'un mot est défini comme la position du mot lorsque toutes les permutations (ou dispositions) possibles de ses lettres sont organisées par ordre alphabétique, comme dans un dictionnaire, peu importe si les mots ont un sens ou non.
Examinons ces deux mots - «bleu» et «vu». Pour commencer, nous écririons tous les arrangements possibles des lettres de ces mots dans l'ordre alphabétique:
"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"
Regardons maintenant à gauche et trouvons la position des mots dont nous avons besoin. On voit que le mot "bleu" est en 4ème position et "vu" est en 10ème position. Ainsi, le rang du mot "bleu" est 4, et celui de "vu" est 10. C'est la façon générale de calculer le rang d'un mot. Assurez-vous de commencer à compter à partir de 1 seulement.
Tâche
Votre tâche consiste à écrire un code pour prendre n'importe quel mot en entrée et afficher son rang. Le rang doit être la sortie. Faites attention aux mots contenant des lettres répétées.
Exemples
"prime" -> 94
"super" -> 93
"bless" -> 4
"speech" -> 354
"earth" -> 28
"a" -> 1
"abcd" -> 1
"baa" -> 3
Vous pouvez supposer que l'entrée est entièrement en minuscules et l'entrée ne contiendra que des caractères alphabétiques . De plus, si un espace vide ou une chaîne non valide est entré, vous pouvez renvoyer n'importe quoi.
Notation
C'est le code-golf , donc le code le plus court gagne!
O(n log n)
ou moins. (désolé, pas de Python) Ma soumission (C ++) prend 2,53 secondes pour résoudre le test 14.
['h', 'e', 'l', 'l', 'o']
par opposition à 'hello'
?