Sie erhalten ein Array von Strings und geben true zurück, wenn und nur wenn alle Strings in einer Kette verbunden werden können.
Bedingung für Konnektivität ist, wenn das letzte Zeichen einer Zeichenfolge mit dem ersten Zeichen der zweiten Zeichenfolge übereinstimmt, dann können die zwei Zeichenfolgen verbunden werden .
Beispiel: String []arr ={"abc", "cde", "cad" , "def" , "eac"}
gibt true zurück, da alle Strings in einer Kette verbunden sein können.
%Vor%
Ein anderes Beispiel: String []arr ={"acb" , "cde", "def", "ead" }
gibt Falsch zurück, weil
"cde"->"ead"->"def"
die mögliche Kette ist, aber "acb" weggelassen wird.
Hinweis : Es ist nicht notwendig, mit der ersten Zeichenfolge zu beginnen und die Kette zu bilden. Es kann vorkommen, dass Sie keine Kette erhalten, wenn Sie mit der ersten Zeichenfolge beginnen. Sie können eine Kette erhalten, wenn Sie mit einer anderen Zeichenfolge beginnen. Wenn es eine mögliche Kette gibt, sollte Ihre Lösung true zurückgeben.
Wenn im zweiten Beispiel der erste String “fcb”
wäre, dann hätte eine mögliche Kette existiert, "cde"->"ead"->"def"->"fcb"
also True .
MÖGLICHE LÖSUNG (was ich denke): Betrachte jede Zeichenkette als Diagrammknoten und verbinde die Knoten, wenn die Bedingung erfüllt ist. Sobald das erledigt ist, reduziert sich das Problem auf das Finden,
if there exists a Hamiltonian Cycle in a graph
, was NP-vollständiges Problem ist.
Wer schlägt irgendeinen Algorithmus oder andere Lösungen vor?