Ich habe eine Sammlung von Strings, und ich muss den ersten Index wissen, wo sie sich alle unterscheiden. Ich kann mir zwei Möglichkeiten, dies zu tun: (das folgende Pseudo-Code direkt an der Spitze von meinem Kopf und kann stark fehler beladen)Algorithmus, um den ersten Index zu finden, wo Strings unterschiedlich sind?
Erster Weg:
var minLength = [go through all strings finding min length];
var set = new set()
for(i=0;i<minlength;i++)
{
for(str in strings)
{
var substring = str.substring(0,i);
if(set.contains(substring))
break; // not all different yet, increment i
set.add(substring)
}
set.clear(); // prepare for next length of substring
}
Das erscheint mir als Brutto wegen der Verwendung einer festgelegten Datenstruktur, wo es so aussieht, als ob man nicht benötigt wird.
Zweiter Weg:
var minLength = [go through all strings finding min length];
strings.sort();
for(i=0;i<minlength;i++)
{
boolean done = true;
char last = null;
for(str in strings)
{
char c = str[i];
if(c == last)
{
// not all different yet, increment i
done = false;
break;
}
last = c;
}
if(done)
return i;
}
Aber es ärgert mich, dass ich die Art zuerst laufen, weil der Sortieralgorithmus, seine Natur nach, den Zugang zu den Informationen hat, die ich suche.
Sicher muss es einen effizienteren Weg als das, was ich oben aufgeführt habe. Irgendwann würde ich es gerne für jede Art von Array abstrahieren, aber das wird trivial sein und es ist einfacher, es als String-Problem zu betrachten.
Irgendwelche Hilfe?
** UPDATE: Ich habe mich anscheinend nicht sehr gut erklären können. Wenn meine Strings ["apple", "banana", "gurke", "banking"] sind, möchte ich, dass die Funktion 3 zurückgibt, weil zwei Strings ("banana" und "banking") durch den Index 0 übereinstimmten. 1, und 2, so ist 3 der erste Index, wo sie alle einzigartig sind.
Als Daniel unten erwähnt, eine bessere Art und Weise meine Bedürfnisse zu erklären ist, dass: „Ich Index finden möchte ich wo Teilzeichenfolge Aufruf (0, i) auf alle meine Saiten in allen eindeutigen Werten führen.“ **
Ist es ich, oder findet das zweite Programm den ersten Index, bei dem jeder String ein eindeutiges Zeichen hat, während der erste nach dem ersten Index i sucht, während der Teilstring (0, i) für jeden String eindeutig ist? – Stephan202
Es ist sehr unklar, was Sie unter "der erste Index, wo sie alle abweichen" für eine Sammlung von Zeichenfolgen verstehen. Kannst du bitte klarstellen, was das bedeutet und was du suchst? Außerdem sind einige Informationen über die von Ihnen verwendete Sprache von entscheidender Bedeutung, da es je nach Sprache viele verschiedene Möglichkeiten gibt, diese Art von Problem zu lösen. –
Betrachten Sie {111, 123, 223}. Dann findet das erste Programm Index 1, während das zweite Programm keinen Index findet. – Stephan202