Definição
A classificação de uma palavra é definida como a posição da palavra quando todas as permutações (ou arranjos) possíveis de suas letras são organizadas em ordem alfabética, como em um dicionário, independentemente de as palavras serem significativas ou não.
Vamos considerar essas duas palavras - "azul" e "visto". Para começar, escreveríamos todos os arranjos possíveis das letras dessas palavras em ordem alfabética:
"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"
Agora vamos olhar da esquerda e encontrar a posição das palavras que precisamos. Vemos que a palavra "azul" está na 4ª posição e "vista" está na 10ª posição. Portanto, a classificação da palavra "azul" é 4, e a de "visto" é 10. Essa é a maneira geral de calcular a classificação de uma palavra. Certifique-se de começar a contar apenas de 1.
Tarefa
Sua tarefa é escrever um código para receber qualquer palavra como entrada e exibir sua classificação. A classificação deve ser a saída. Tenha cuidado com as palavras que contêm letras repetidas.
Exemplos
"prime" -> 94
"super" -> 93
"bless" -> 4
"speech" -> 354
"earth" -> 28
"a" -> 1
"abcd" -> 1
"baa" -> 3
Você pode assumir que a entrada esteja completamente em minúscula e a entrada conterá apenas caracteres alfabéticos . Além disso, se um espaço em branco ou uma sequência inválida for inserida, você poderá retornar qualquer coisa.
Pontuação
Isso é código-golfe , então o código mais curto vence!
O(n log n)
ou menos. (desculpe, não Python) Minha submissão (C ++) leva 2.53s para resolver teste 14.
['h', 'e', 'l', 'l', 'o']
em oposição a 'hello'
?