ゴール:
文字列の配列を指定して、各文字列の短縮バージョンを作成します。
仕様:
このチャレンジでは、略語は文字列の最初のN文字です。文字列の場合abc
:a
、ab
、およびabc
すべての有効な略語があり、一方でbc
、とac
はありません。
文字列の配列が与えられた場合、入力と略語が与えられた場合に、略語が参照している入力の項目を判別できるように、略語の最短セットを見つけたいと思います。
例:
入力: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
最初の文字列から文字列を処理します。
月曜日はの文字列のみ
M
であるため、可能な限り短い省略形はM
です。火曜日はで始まりますが
T
、木曜日もそうです。これは、文字列を試すことを意味しますTU
。それで始まる文字列は他にないため、を使用しますTU
。水曜日は
W
、木曜日はTh
、金曜日はF
です。
その他の例:
Input: "one,two,three,four,five,six,seven"
Output: "o,tw,th,fo,fi,si,se"
Input: "red,orange,yellow,green,blue,purple"
Output: "r,o,y,g,b,p"
Input: "a,ab,abc"
Output: Not valid! No abbreviation for `a` that doesn't apply to the other items.
ノート:
合理的な方法で入力と出力を行います。
入力は常に文字列の有効な配列であると想定できます。
最後のテストケースとは異なり、常に解決策があると想定できます。
文字列は、印刷可能なASCII(またはエンコード内の印刷可能な文字)のみで構成されます
これはコードゴルフであるため、最少バイトが勝ちます!
U
火曜日に大文字を使用しますが、h
木曜日には小文字を使用します。