Definizione
Il rango di una parola è definito come la posizione della parola quando tutte le possibili permutazioni (o disposizioni) delle sue lettere sono disposte in ordine alfabetico, come in un dizionario, indipendentemente dal fatto che le parole siano significative o meno.
Consideriamo queste due parole: "blu" e "visto". Per cominciare, scriveremmo tutte le possibili disposizioni delle lettere di queste parole in ordine alfabetico:
"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"
Ora guardiamo da sinistra e troviamo la posizione delle parole di cui abbiamo bisogno. Vediamo che la parola "blu" è in quarta posizione e "visto" è in decima posizione. Quindi il rango della parola "blu" è 4, e quello di "visto" è 10. Questo è il modo generale di calcolare il rango di una parola. Assicurati di iniziare a contare solo da 1.
Compito
Il tuo compito è scrivere un codice per prendere qualsiasi parola come input e visualizzarne il rango. Il rango dovrebbe essere l'output. Fai attenzione alle parole che contengono lettere ripetute.
Esempi
"prime" -> 94
"super" -> 93
"bless" -> 4
"speech" -> 354
"earth" -> 28
"a" -> 1
"abcd" -> 1
"baa" -> 3
Puoi supporre che l'input sia completamente in minuscolo e che l'input conterrà solo caratteri alfabetici . Inoltre, se viene inserito uno spazio vuoto o una stringa non valida, è possibile restituire qualsiasi cosa.
punteggio
Questo è code-golf , quindi vince il codice più corto!
O(n log n)
o meno. (scusa, no Python) Il mio invio (C ++) richiede 2,53 secondi per risolvere il test 14.
['h', 'e', 'l', 'l', 'o']
esempio al contrario 'hello'
?