Objetivo:
Dada uma matriz de cadeias, crie versões abreviadas de cada cadeia.
Especificação:
Para esse desafio, uma abreviação é os primeiros N caracteres de uma sequência. Para a cadeia abc
: a
, ab
, e abc
são todas as abreviaturas válidas, enquanto bc
, e ac
não são.
Dada uma matriz de cadeias, queremos encontrar o menor conjunto de abreviações, de modo que, dada a entrada e qualquer abreviação, você possa determinar a qual item da entrada a referência se refere.
Exemplo:
Entrada: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
Trabalhamos o nosso caminho através das cordas, começando pela primeira.
Monday é apenas a sequência de itens com um
M
, portanto, a menor abreviação possível éM
.Terça começa com
T
, mas quinta-feira também. Isso significa que tentamos a stringTU
. Como nenhuma outra string começa com isso, usamosTU
.Quarta é
W
, quinta éTh
e sexta éF
.
Mais exemplos:
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.
Notas:
Você faz entrada e saída de qualquer maneira razoável.
Você pode assumir que a entrada sempre será uma matriz válida de strings.
Você pode assumir que sempre haverá uma solução, diferente do último caso de teste.
As strings consistem apenas em ASCII imprimível (ou nos caracteres imprimíveis na sua codificação)
Isso é código de golfe, e o menor número de bytes ganha!
U
para terça-feira, mas uma minúscula h
para quinta-feira.