Wiederfinden von Wörtern in einer Zeichenfolge und Zählen der Wiederholungen

8

Ich muss wiederholte Wörter auf einer Zeichenkette finden und dann zählen, wie oft sie wiederholt wurden. Also, im Grunde, wenn die Eingabe-Zeichenfolge ist dies:

%Vor%

Ich muss eine neue String-Liste ohne Wiederholungen erstellen und irgendwo anders die Anzahl der Wiederholungen für jedes Wort speichern, zB:

Neue Zeichenfolge: "Haus, Hund"

Neues Int-Array: [3, 4]

Gibt es eine Möglichkeit, dies einfach mit Java zu tun? Ich habe es geschafft, die Zeichenfolge mit s.split () zu trennen, aber wie zähle ich dann Wiederholungen und eliminiere sie in der neuen Zeichenfolge? Danke!

    
Hans 27.01.2011, 19:14
quelle

22 Antworten

15

Sie haben die harte Arbeit erledigt. Jetzt können Sie einfach ein Map verwenden, um die Vorkommen zu zählen:

%Vor%

Wenn Sie map.get(word) verwenden, wird Ihnen oft ein Wort angezeigt. Sie können eine neue Liste erstellen, indem Sie map.keySet() :

durchlaufen %Vor%

Beachten Sie, dass die Reihenfolge, in der Sie keySet erhalten, beliebig ist. Wenn Sie möchten, dass die Wörter sortiert werden, wenn sie zum ersten Mal in Ihrem Eingabe-String angezeigt werden, sollten Sie stattdessen ein LinkedHashMap verwenden.

    
Mark Peters 27.01.2011, 19:18
quelle
3

Wie von anderen erwähnt, verwenden Sie String :: split (), gefolgt von einer Map (hashmap oder linkedhashmap) und führen Sie dann Ihr Ergebnis zusammen. Um der Vollständigkeit halber den Code zu setzen.

%Vor%

Neue Zeichenfolge ist Output = House, Dog

Int-Array (oder besser Liste) Values = [3, 4] (Sie können List :: toArray verwenden), um ein Array zu erhalten.

    
Favonius 28.01.2011 03:08
quelle
3

Probieren Sie das aus,

%Vor%

}

    
Puja Mishra 17.07.2013 06:27
quelle
1
%Vor%     
javaCode555 23.03.2015 17:51
quelle
1

Es kann Ihnen irgendwie helfen.

%Vor%     
RKP 25.05.2017 08:19
quelle
0

Wenn das eine Hausaufgabe ist, dann kann ich nur sagen: benutze String.split() und HashMap<String,Integer> .

(Ich sehe, dass Sie bereits Split () gefunden haben. Sie sind dann auf der richtigen Linie.)

    
biziclop 27.01.2011 19:18
quelle
0

Sie können die Datenstruktur des Präfixbaums (Trie) verwenden, um Wörter zu speichern und die Anzahl der Wörter im Präfixbaumknoten zu verfolgen.

%Vor%

Nachdem Sie alle Wörter eingefügt haben, müssen Sie das Wort und die Zählung drucken, indem Sie Maxheap iterieren.

    
Dev Null Fin 21.07.2012 01:56
quelle
0
%Vor%     
subash 24.03.2013 18:05
quelle
0
%Vor%     
K Madhu Sudhan Reddy 29.08.2013 05:29
quelle
0

Wenn Sie ein String-Argument übergeben, zählt es die Wiederholung jedes Wortes

%Vor%

Ausgabe:

%Vor%     
loknath 08.05.2014 04:26
quelle
0
%Vor%     
Purushotham 12.08.2014 11:40
quelle
0

Ich hoffe, das wird dir helfen

public void countInPara (String str) {

%Vor%     
Harshit Thacker 14.10.2014 13:36
quelle
0
%Vor%

Eingabe: Dies ist, was es ist, was es sein kann

Ausgabe:

[dies ist, was, es, ist, das ist, was es sein kann]

{can = 1, was = 2, be = 1, das = 2, ist = 3, es = 2}

[1, 2, 1, 2, 3, 2]

[kann, was, sei, das, ist es]

    
RishiKesh Pathak 29.03.2016 07:08
quelle
0
%Vor%

}

    
chirag kansal 16.04.2016 05:15
quelle
0

Bitte verwenden Sie den folgenden Code. Es ist das einfachste nach meiner Analyse. Ich hoffe, Sie werden es mögen:

%Vor%     
Tarun Majumder 16.05.2016 06:20
quelle
0
%Vor%     
Manikanta Bondu 12.07.2016 08:55
quelle
0
%Vor%

}

    
Volodimir Shalashenko 22.09.2016 11:11
quelle
0
%Vor%     
Dalee Bisen 04.02.2012 16:42
quelle
0
%Vor%     
Rahul Lakhmara 29.01.2017 10:06
quelle
0
%Vor%     
Elamparuthi 16.03.2017 13:40
quelle
0

Hier sind die Schritte zum Zählen von wiederholten Wörtern in einem String

  1. Erstellen Sie eine leere HashMap vom Typ String & amp; Ganzzahl
  2. Teilen Sie die Zeichenfolge mit Leerzeichen ein Trennzeichen und weisen Sie sie String []
  3. zu
  4. Iterieren durch das Array String [] nach dem Teilen mit for-each loop
  5. Hinweis: Wir konvertieren alle Zeichenfolgen in Kleinbuchstaben, bevor Sie die Groß- / Kleinschreibung beachten
  6. Überprüfen Sie, ob ein bestimmtes Wort bereits in der HashMap vorhanden ist mit der Methode containsKey (k) der Map-Schnittstelle
  7. Wenn es enthält, erhöhen Sie den Zählwert um 1, indem Sie die Methode put (K, V) von Map
  8. verwenden
  9. Andernfalls fügen Sie die Methode put () von Map mit dem Zählwert als 1
  10. ein
  11. Drucken Sie schließlich Map mit der Methode keySet () oder entrySet () von Map.Entry Schnittstelle

Komplettes Programm ist etwas lang, da es String-Inhalte aus der lokalen Datei liest. Sie können den Artikel im folgenden Link einfügen

Ссылка

    
BenchResources.Net 17.07.2017 10:55
quelle
0

Für Strings ohne Leerzeichen können wir den unten genannten Code verwenden

%Vor%

Übergeben Sie einige Eingaben als "hahaha" oder "ba na na" oder "xxxyyyzzzxxxzzz" geben Sie die gewünschte Ausgabe.

    
Puneet Akhouri 03.09.2017 12:22
quelle

Tags und Links