Heim  >  Artikel  >  Java  >  Wie kann man die Zeichenhäufigkeit in einer Zeichenfolge effizient zählen?

Wie kann man die Zeichenhäufigkeit in einer Zeichenfolge effizient zählen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 07:21:30648Durchsuche

How to Efficiently Count Character Frequencies in a String?

Zählen der Zeichenhäufigkeit in Zeichenfolgen

Eine häufige Aufgabe beim Programmieren ist das Zählen der Häufigkeit von Zeichen in einer bestimmten Zeichenfolge. Angenommen, wir haben eine Zeichenfolge „aasjjikkk“. Wir wollen die Anzahl jedes einzelnen Zeichens bestimmen, was zu „2 ‚a‘, 1 ‚s‘, 2 ‚j‘, 1 ‚i‘, 3 ‚k‘“ führt.“

Lösung Verwendung von Java Map

Eine effiziente Lösung ist die Verwendung einer Java Map, die Schlüssel (in diesem Fall Zeichen) mit Werten (der Anzahl ihrer Vorkommen) verknüpft. Wir durchlaufen die Zeichenfolge und prüfen, ob jedes Zeichen bereits in der Karte vorhanden ist. Wenn ja, erhöhen wir die Anzahl; Andernfalls fügen wir es mit einer Anzahl von 1 ein.

<code class="java">Map<Character, Integer> map = new HashMap<>();
String s = "aasjjikkk";
for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    Integer val = map.get(c);
    if (val != null) {
        map.put(c, val + 1);
    }
    else {
        map.put(c, 1);
    }
}

Dieser Ansatz bietet eine natürliche Darstellung der Zeichenanzahl in einem Schlüssel-Wert-Paarformat.

Alternative Lösung mit Multiset

Alternativ ermöglicht uns die Multiset-Datenstruktur von Guava, das Vorkommen von Elementen zu zählen, ohne explizit eine Karte zu pflegen.

<code class="java">Multiset<Character> multiset = HashMultiset.create();
String s = "aasjjikkk";
for (int i = 0; i < s.length(); i++) {
    char c = s.charAt(i);
    multiset.add(c);
}</code>

Das Multiset enthält jetzt die Anzahl jedes Zeichens im Zeichenfolge.

Das obige ist der detaillierte Inhalt vonWie kann man die Zeichenhäufigkeit in einer Zeichenfolge effizient zählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn