Java komprimiert Strings

8

Ich muss eine Methode erstellen, die einen String empfängt und auch einen String zurückgibt.

Ex-Eingang: AAABBBBCC

Ex-Ausgang: 3A4B2C

Nun, das ist ziemlich peinlich und ich schaffte es nicht, es in dem Interview zu machen, das ich heute hatte (ich bewarb mich um eine Junior-Position), jetzt versuche ich zu Hause etwas, das statisch funktioniert, ich meine, Ich benutze keine Schleife, die irgendwie nutzlos ist, aber ich weiß nicht, ob ich nicht genug Schlaf oder etwas anderes bekomme, aber ich kann nicht herausfinden, wie meine For-Schleife aussehen sollte. Dies ist der Code:

%Vor%

Danke für deine Hilfe, ich versuche meine logischen Fähigkeiten zu verbessern.

    
Cristian 18.05.2012, 06:04
quelle

16 Antworten

9

Schleife durch die Saite und merke dir, was du zuletzt gesehen hast. Jedes Mal, wenn Sie die gleiche Anzahl an Buchstaben sehen. Wenn Sie einen neuen Buchstaben sehen, setzen Sie das, was Sie gezählt haben, auf die Ausgabe und setzen Sie den neuen Buchstaben als das, was Sie zuletzt gesehen haben.

%Vor%     
n00begon 18.05.2012 06:11
quelle
4
  • benutze StringBuilder (das hast du gemacht)
  • Definieren Sie zwei Variablen - previousChar und counter
  • Schleife von 0 bis str.length() - 1
  • jedes Mal str.charat(i) und vergleichen Sie es mit dem, was in der previousChar Variable
  • gespeichert ist
  • Wenn das vorherige Zeichen gleich ist, erhöhen Sie einen Zähler
  • Wenn der vorherige Char nicht derselbe ist und der Zähler 1 ist, inkrementiere den Zähler
  • Wenn das vorherige Zeichen nicht dasselbe ist und der Zähler & gt; 1 ist, fügen Sie counter + currentChar , Zähler zurücksetzen
  • hinzu
  • Ordne nach dem Vergleich das aktuelle char previousChar zu
  • decken Ecken wie "first char"
  • ab

So ähnlich.

    
Bozho 18.05.2012 06:09
quelle
4

Sie können das mit den folgenden Schritten tun:

  • Erstellen Sie eine HashMap
  • Erhalte für jedes Zeichen den Wert aus der hashmap -Wenn der Wert null ist, geben Sie 1 ein -else, ersetze den Wert mit (Wert + 1)
  • Iterate über die HashMap und verkette sie (Value + Key)
Chander Shivdasani 18.05.2012 06:13
quelle
3

Bitte versuchen Sie es. Dies kann helfen, die Anzahl der Zeichen zu drucken, die wir über die Konsole an das Zeichenfolgenformat übergeben.

%Vor%     
Bala 08.03.2016 07:34
quelle
2

In der Zeile count = ... interessiert sich lastIndexOf nicht für aufeinanderfolgende Werte und gibt nur das letzte Vorkommen an.

Zum Beispiel wäre in der Zeichenkette "ABBA" der Teilstring die ganze Zeichenkette.

Die Länge der Teilzeichenfolge entspricht auch dem Subtrahieren der beiden Indizes.

Ich denke wirklich, dass du eine Schleife brauchst. Hier ist ein Beispiel:

%Vor%     
Gyscos 18.05.2012 06:16
quelle
2

Java ist nicht meine Hauptsprache, benutze sie kaum, aber ich wollte es versuchen:] Nicht einmal sicher, ob Ihre Zuweisung eine Schleife erfordert, aber hier ist ein Regexp-Ansatz:

%Vor%     
tigrang 18.05.2012 07:34
quelle
2

Dies ist nur eine weitere Möglichkeit, dies zu tun.

%Vor%     
Reg 18.05.2012 06:22
quelle
2

Folgendes kann verwendet werden, wenn Sie nach einer Basislösung suchen. Durchsuche die Zeichenfolge mit einem Element und entferne nach dem Auffinden aller Elementvorkommen das Zeichen. Damit es bei der nächsten Suche nicht stört.

%Vor%

Und die Ausgabe wird sein: = Ergebnis ist = a4b5c3

    
SurajSr 19.07.2017 22:47
quelle
1
%Vor%

Ein weiterer einfacher Weg mit Multiset von Guava-

%Vor%     
Subhrajyoti Majumder 18.05.2012 06:21
quelle
1

Betrachten Sie die folgende Lösung, in der der String s1 die eindeutigen Zeichen identifiziert, die in einem gegebenen String s verfügbar sind (für Schleife 1), in der zweiten for-Schleife eine Zeichenfolge s2, die ein eindeutiges Zeichen enthält und keine Wiederholungen durch Vergleich der Zeichenfolge s1 mit s.

%Vor%     
Chaitanya Vardhan 28.08.2016 21:20
quelle
1

Es kann Ihnen helfen.

%Vor%

Ausgabe:

%Vor%     
Gopinath 15.10.2016 02:00
quelle
1

Der einfachste Ansatz: - Zeitkomplexität - O (n)

%Vor%     
Kushal Shinde 16.06.2017 00:07
quelle
0

Der folgende Code fordert den Benutzer auf, ein bestimmtes Zeichen einzugeben, um das Vorkommen zu zählen.

%Vor%     
PSN 14.08.2015 07:29
quelle
0
%Vor%     
Gökhan Akduğan 27.09.2015 06:17
quelle
0
%Vor%     
Kallu mall 06.03.2016 03:10
quelle
0
%Vor%     
Parth Parikh 29.10.2017 08:00
quelle

Tags und Links