gemeinsame charakter in 2 Strings ermitteln und als Zeichenkette zurückgeben

bradig

Aktives Mitglied
Moin,

Meine Aufgabe:
Ermittelt die Buchstaben, die in den beiden gegebenen Zeichenketten vorkommen und gibt diese Buchstaben als neue Zeichenkette zurück. Falls es keine gemeinsamen Buchstaben gibt (das schließt auch die Fälle ungültiger Parameterwerte ein), so wird eine leere Zeichenkette zurückgegeben.

meine Lösung:

Java:
public static String getCharacters(final String a, final String b) {
        String d="";

        for(int i=0;i<a.length();i++){
            char c1= a.charAt(i);
            for(int j=0;j<b.length();j++){
                char c2=b.charAt(j);
                if(c1==c2){
                    d=d+c1;
                }
                else{
                    d=d+"";
            }
            }
        }
        return d;              
    }
}

Beim Testen habe ich festgestellt,dass etwas im Code fehlt.
was genau weiß ich nicht.

Bitte um Hilfe.

Herzlich
Bradig

 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Was hast du beim Testen festgestellt? Was fehlt?
Was soll zum Beispiel hier zurückgegeben werden?:
Java:
s1 = "aab";
s2 = "aba";
System.out.println(getCharacters(s1, s2));
 

bradig

Aktives Mitglied
Beispiel:
Zeichenkette a: "baac"
Zeichenkette b: "fdeabac"

es soll "abc" oder "acb" oder "bac" oder "bca" oder "cab" oder "cba" zurückgegeben werden
 

Joose

Top Contributor
Naja entweder oder ... Java wird nicht aus Lust und Laune eines davon zurückgeben sondern genau das was programmiert wurde.
Das Problem bei deinem Code ist das du schon gefunde Buchstabe nochmal prüfst.

Bezogen auf das Beispiel von Flown:
Java:
s1 = "aab";
s2 = "aba";
System.out.println(getCharacters(s1, s2));
Die Ausgabe wäre (mit deinem Code) aaaab

Mit deinem Beispiel wäre die Ausgabe (mit deinem Code): baaaac

Wenn du einen Buchstaben schon in beiden Strings gefunden hast, musst du diese nicht nochmal vergleichen.
 

bradig

Aktives Mitglied
Ich Weiss es.
Aber ich habe Es nicht besser implementieren können.
Ich habe ein ähnliches Problem(mit bufferreader) hier gefunden,das aber keine Eindeutige Lösung hatte.
Anscheinend ist es nicht einfach ,diese Aufgabe zu lösen.

Herzlich

Bradig

Ps:
Ich würde mich sehr für jeden guten Lösungsansatz freuen.
 

Flown

Administrator
Mitarbeiter
Du möchtest einen Lösungsansatz? Dann nutz doch String#indexOf(char c)
Die Idee:
Iteriere über die einzelnen char in String a
- Überprüfe ob char in b enthalten ist (mit indexOf != -1)
- Überprüfe ob char in result enthalten ist (ebenfalls indexOf == -1)
- wenn true, dann füge es dem result hinzu (result += c)
Gib result zurück

Fertig ist der Algorithmus. Gibt effizientere, aber das war nicht die Frage.
 

Neue Themen


Oben