gemeinsames Vorkommen der charactere von 2 Strings als String zurückgeben

bradig

Aktives Mitglied
gemeinsames Vorkommen der charactere von 2 Strings als String zurückgeben.
Der String ,der zurückgegeben wird,darf nur ein Element einmal enthalten.

Bp: getCommonCharacters( "abc", "cabadac") ="abc"
Ich bekomme aber immer aaabcc.
Ich weiß auch ,warum ich so ein Ergebnis bekomme.
Ich weiß aber nicht,wie das ganze lösen kann,damit ich Elemente nur einmal in meiner Lösung zurückbekommen kann.

Java:
  public static String getCommonCharacters(final String a, final String b) {

        String d="";

        for(int i=0;i<a.length();i++){
            for(int j=0;j<b.length();j++){
                if(a.charAt(i)==b.charAt(j)){
                    d=d+a.charAt(i);

                }
            }
        }

        return d;
    }
}

Bitte um Hilfe
Herzlich

Bradig
 

Robat

Top Contributor
Hallo bradig,

Das was du erreichen willst kannst du in einer Zeile umsetzten:
Schau dir mal die Funktion String.replace All an ( in Verbindung mit Pattern.quote um Sonderzeichen auszuschließen).

Edit PS: wenn du deinen Code nicht verändern willst, Kannst du natürlich auch prüfen ob es den Buchstaben in deiner Lösung schon gibt bevor du es hinzugefügst

Grüße
Robert
 
Zuletzt bearbeitet:

bradig

Aktives Mitglied
komme leider nicht auf die Lösung.
habe viele Sachen ausprobiert und es klappt immer nicht.
Hat irgendeiner eine Idee?

herzlich
bradig
 

bradig

Aktives Mitglied
so gerade gelöst.
ich wusste nicht ,dass charSequence auch ein String ist,deswegen habe ich die contains()-Methode immer weggelassen.
Danke trotzdem Robat.
die Lösung:
Java:
  public static String getCommonCharacters(final String a, final String b) {

        String d="";

        for(int i=0;i<a.length();i++){
            for(int j=0;j<b.length();j++){
                if(a.charAt(i)==b.charAt(j)){
                    if(!d.contains(a.charAt(i)+"")){

                        d=d+a.charAt(i);
                    }

                }
            }
        }

        return d;

    }

Herzlich

Bradig
 

Jardcore

Top Contributor
Gibt auch noch weitere Vereinfachungen:
MitForEach:
Java:
public String getCommonCharacters(final String a, final String b) {
        String result = "";
      
        for(char c1 : a.toCharArray()) {
            for(char c2 : b.toCharArray()) {
                if(c1 == c2 && !result.contains(String.valueOf(c1))) {
                    result += c1;
                }
            }
        }
      
        return result;
    }

Java8 streams:
Java:
public String getCommonCharacters(final String a, final String b) {
        return a.chars()
                .distinct()
                .mapToObj(c -> String.valueOf((char)c))
                .filter(s -> b.contains(s))
                .collect(Collectors.joining());
    }
Zu Erklärung, hier wird von a ein IntStream erzeugt.
Dann werden mit distinct() alle doppelten rausgefeuert.
Mit mapToObj() wird aus den Chars ein String gemacht, damit man damit leichter weiter arbeiten kann.
filter() schaut ob der aktuelle Buchstabe (s) im String b vorhanden ist.
Zu guter Letzt werden mit collect() und dem joining() die gefilterten Buchstaben zu einem String zusammengefügt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Gemeinsames Projekt Java Basics - Anfänger-Themen 13
H kleinstes gemeinsames vielfaches Java Basics - Anfänger-Themen 18
H Java kleinstes gemeinsames Vielfaches Java Basics - Anfänger-Themen 10
K gemeinsames Objekt Java Basics - Anfänger-Themen 6
A Dateiname auf Vorkommen prüfen Java Basics - Anfänger-Themen 29
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
J erstes Vorkommen eines Chars aus einem String entfernen Java Basics - Anfänger-Themen 3
J erstes Vorkommen eines chars entfernen Java Basics - Anfänger-Themen 1
J Vorkommen von Zeichen Java Basics - Anfänger-Themen 44
G Teil(e) eines Strings entfernen wenn spezifische Zeichen (< & >) vorkommen Java Basics - Anfänger-Themen 5
V Variablen Vorkommen programmieren Java Basics - Anfänger-Themen 18
K alle Vorkommen einer bestimmten Ziffer in einer Zahl zählen Java Basics - Anfänger-Themen 2
B seltenes Vorkommen eines Integers in einem Array Java Basics - Anfänger-Themen 13
J Array; Vorkommen zählen Java Basics - Anfänger-Themen 10
D Eine Stelle eines Char- Arrays nach dem vorkommen in einem ganzem anderem Array überprüfen Java Basics - Anfänger-Themen 20
K Prüfen ob Strings 2mal vorkommen Java Basics - Anfänger-Themen 21
J Alle Vorkommen eines chars in einem Array durch einen anderen char ersetzen Java Basics - Anfänger-Themen 10
A Zeichen darf nur 3x hintereinander vorkommen Java Basics - Anfänger-Themen 6
H Methoden Array auf Vorkommen eines Integers überprüfen Java Basics - Anfänger-Themen 2
K Alle vorkommen eines Zeichens in StringBuffer Objekt löschen Java Basics - Anfänger-Themen 6
C Vorkommen eines Zeichens zählen Java Basics - Anfänger-Themen 4
C Datei umbennen (letzes vorkommen in File) Java Basics - Anfänger-Themen 5
G Zufallszahlen die alles einmal vorkommen Java Basics - Anfänger-Themen 15
Z Feld prüfen ob 3 gleiche zahlen nach einander vorkommen Java Basics - Anfänger-Themen 3
H Mehrmaliges vorkommen eines Zeichens in einem String Java Basics - Anfänger-Themen 14
F Array - Vorkommen der einzelnen Werte ausgeben Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben