Drehe den String aaaabbbbddd in a4b4d3

8

Ich versuche einen Vorsprung zu bekommen, indem ich Interviewfragen ausprobiere und ich bin auf dieses Problem gestoßen:

Drehe den String aaaabbbbddd in a4b4d3

Sie möchten grundsätzlich die vorhandene Zeichenfolge in eine Zeichenfolge mit jedem eindeutigen Zeichenvorkommen und der Häufigkeit, mit der das Zeichen auftritt, konvertieren.

Dies ist meine Lösung, aber ich denke, sie könnte zu etwas eleganterem verfeinert werden:

%Vor%

Hat jemand andere Vorschläge für eine Lösung?

    
user3029486 01.12.2013, 05:55
quelle

5 Antworten

9

Verwenden Sie stattdessen Map<Character, Integer> . Versuchen Sie, das neue Zeichen in die Karte einzufügen. Wenn es bereits existiert, dann inkrementiere den Wert für dieses spezielle Zeichen.

Beispiel:

%Vor%     
Makoto 01.12.2013, 06:01
quelle
3

Um @ Makotos wundervolle Antwort hinzuzufügen, würde ich in Ihrer Situation ein TreeMap anstelle eines HashMap verwenden. A TreeMap ermöglicht es Ihnen, in alphabetischer Reihenfolge zu drucken. Ich habe auch den Druckcode hinzugefügt, um Ihnen zu zeigen, wie es aussehen würde. Es ist vollständig lauffähig.

%Vor%

Ausgabe mit TreeMap : a4b4d3

Ausgabe mit HashMap : d3b4a4

    
Paul Samsotha 01.12.2013 06:29
quelle
1

Meine Version

%Vor%     
Evgeniy Dorofeev 01.12.2013 06:03
quelle
0

Hier ist der Code, den ich ausprobiert habe.

Ich denke, Sie können nicht einen einfacheren Code als das verlangen.

%Vor%     
Umair 01.12.2013 10:01
quelle
-1

Hier ist meine Lösung

%Vor%     
Prasanna Kumar 01.12.2013 06:22
quelle

Tags und Links