Ho bisogno di scrivere una funzione per rilevare se un insieme di stringhe ha bisogno di delimitatori se concatenato in qualsiasi ordine.
Ad esempio, le stringhe ("A","B","C")
non hanno bisogno di un delimitatore: "ABCBB" -> ["A","B","C","B","B"]
.
Tuttavia, le stringhe ("Pop","corn","Popcorn")
do hanno bisogno di un delimitatore, poiché la stringa "Popcorn"
è ambigua: può essere ["Pop","corn"]
o ["Popcorn"]
.
Altri due casi:
("Pop","Popcorn","Kernel") -> Not ambiguous
("A","AB","BC","BA") -> Ambiguous (on the string "ABCA")
Algoritmi che ho preso in considerazione, ma non funzionano:
- Verifica se una stringa inizia con un'altra stringa, che non riesce
("Pop","Popcorn","Kernel")
- Verifica se una stringa è completamente composta da altre stringhe, che non riesce
("A","AB","BC","BA")
- Test di tutte le possibili combinazioni di stringhe (non riesce a terminare in modo non ambiguo)
Come posso rilevare (si spera in modo efficiente) se un insieme di stringhe ha bisogno di un delimitatore quando è concatenato?