定義
単語のランクは、単語が意味のあるかどうかに関係なく、辞書のように、文字の可能なすべての順列(または配置)がアルファベット順に配置されるときの単語の位置として定義されます。
「青」と「見える」という2つの単語を考えてみましょう。そもそも、これらの単語の文字のすべての可能な配置をアルファベット順に記述します。
"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"
次に、左から見て、必要な単語の位置を見つけましょう。「blue」という単語が4番目の位置にあり、「seen」という単語が10番目の位置にあることがわかります。したがって、単語「blue」のランクは4、「seen」のランクは10です。これは、単語のランクを計算する一般的な方法です。必ず1からカウントを開始してください。
仕事
あなたの仕事は、入力として任意の単語を取り、そのランクを表示するコードを書くことです。ランクが出力になります。繰り返し文字を含む単語には注意してください。
例
"prime" -> 94
"super" -> 93
"bless" -> 4
"speech" -> 354
"earth" -> 28
"a" -> 1
"abcd" -> 1
"baa" -> 3
入力は完全に小文字であると想定でき、入力にはアルファベット文字のみが含まれます。また、空白または無効な文字列が入力された場合は、何でも返すことができます。
得点
これはcode-golfなので、最短のコードが優先されます!
O(n log n)
。(申し訳ありませんが、Pythonの)私の提出(C ++)テスト14解決するために2.53sを取る
['h', 'e', 'l', 'l', 'o']
とは対照的に、 'hello'
?