String größten Teilstring ermitteln

Hallo

Hab ein Problem usw. soll ich aus einem eingegebenen String über die Konsole den längsten Teilstring ausgeben.

z.B Eingabe: aabbbbccddd -> Ausgabe: b

Ich darf keine arrays, hashmaps usw. verwenden.

Ich habe es mit switch case anweisung versucht für jeden buchtaben einen case block und dann den entsprechenden zähler für diesen Buchstaben hochgezählt. Am ende über Math.Max() methode den maximalen wert herausgeholt.

Funktioniert aber nicht , kann auch nicht den entsprechenden Buchstaben aus dem String extrahieren.
ich denke mein Algorithmus ist falsch.

Hat jemand eine andere Idee wie man das lösen könnte?

gruß

Erstmal definieren, was ein “Teilstring” überhaupt ist.

Was würde ein Mensch tun?

a … Aktuell hat man 1xa, bisher ist der längste Teilstring 1xa
aa … Aktuell hat man 2xa, bisher ist der längste Teilstring 2xa
aab … Aktuell hat man 1xb, bisher ist der längste Teilstring 2xa
aabb … Aktuell hat man 2xb, bisher ist der längste Teilstring 2xa
aabbb … Aktuell hat man 3xb, bisher ist der längste Teilstring 3xb
aabbbb … Aktuell hat man 4xb, bisher ist der längste Teilstring 4xb
aabbbbc … Aktuell hat man 1xc, bisher ist der längste Teilstring 4xb

Ich würde erstmal sowas hinschreiben wie


char currentSequenceChar = ' ';
int currentSequenceLength = 0;
char longestSequenceChar = ' ';
int longestSequenceLength = 0;

und dann schauen, was man da mit einer Schliefe und ein paar if-Abfragen draus machen kann…

[QUOTE=Marco13]Was würde ein Mensch tun?

a … Aktuell hat man 1xa, bisher ist der längste Teilstring 1xa
aa … Aktuell hat man 2xa, bisher ist der längste Teilstring 2xa
aab … Aktuell hat man 1xb, bisher ist der längste Teilstring 2xa
aabb … Aktuell hat man 2xb, bisher ist der längste Teilstring 2xa
aabbb … Aktuell hat man 3xb, bisher ist der längste Teilstring 3xb
aabbbb … Aktuell hat man 4xb, bisher ist der längste Teilstring 4xb
aabbbbc … Aktuell hat man 1xc, bisher ist der längste Teilstring 4xb[/QUOTE]

Und welcher Buchstabe hat hier den längsten Teilstring: aabbbbcaacccccaaa?

cc = currentChar
cl = currentLength
lc = longestChar
ll = longestLength


                cc cl  lc ll

a                a  1   a  1
aa               a  2   a  2
aab              b  1   a  2
aabb             b  2   a  2
aabbb            b  3   b  3
aabbbb           b  4   b  4
aabbbbc          c  1   b  4
aabbbbca         a  1   b  4
aabbbbcaa        a  2   b  4
aabbbbcaac       c  1   b  4
aabbbbcaacc      c  2   b  4
aabbbbcaaccc     c  3   b  4
aabbbbcaacccc    c  4   b  4
aabbbbcaaccccc   c  5   c  5
aabbbbcaaccccca  a  1   c  5
...


Aber wenn du die Frage so stellst, gehe ich davon aus, dass du davon ausgehst, dass man rausfinden soll, welcher Buchstabe am häufigsten vorkommt. Für mich bedeutet “Teilstring” in diesem Fall aber der längste Teilstring, der aus dem gleichen Buchstaben besteht. Vielleicht sollte man das erst noch klären…

Deshalb meine Nachfrage :wink: