Anagramm mit Strings und Methode

Diskutiere Anagramm mit Strings und Methode im Java Basics - Anfänger-Themen Bereich.
X

xImMonti

Java:
public static boolean anagramm( String s1, String s2) {
    s1 = s1.replaceAll(" ", "").toLowerCase();
    s2 = s2.replaceAll(" ", "").toLowerCase();
    if( s1.length() == s2.length();) {
    for(int i = 0; i < s1.length; i++) {
        if(s1.charAt(i) == s2.charAt()) {
            return s1.replace(i,"");
wäre das denn jetzt der Richtige weg? Bevor ich mich jetzt hier wieder fest fahre
Nachtrag: Oder muss ich noch eine zweite for schleife anlegen die s2 durchgefht?
 
mihe7

mihe7

wäre das denn jetzt der Richtige weg?
Nein. Jetzt lass endlich den Scheiß-Code weg.

So lange Du keine Lösungsidee in algorithmischer Weise beschreiben kannst, macht es keinen Sinn irgendwas herum zu programmieren. Der Lösungsansatz muss in erster Linie mal so genau sein, dass er nachvollziehbar ist - er muss sich noch nicht 1:1 in Methodenaufrufe übersetzen lassen.
 
X

xImMonti

1. Testen ob s1==s2
2. prüfen ob s1.charAt(0) in s2 vorhanden ist
3. falls true soll s1.charAt(0) aus s2 aus s1 und s2 entfernt werden
4. Wieder Testen ob s1==s2
5. wieder schritt 2 nur mit s1.charAt(1) bis s1,length && s2.length == 0 ist
 
A

abc66

Und was die Lösung von @abc66 angeht: Die ignorierst Du bitte einfach - er hat die gestellte Aufgabe nicht korrekt gelesen und bietet daher eine Lösung an, die eben auch nicht den Vorgaben entspricht. (Davon abgesehen ist es schlicht kontraproduktiv für Dein Verständnis, denn Du bist dicht dran es selbst gelöst zu haben. Es hat schon einen Grund, warum wir Dir nicht einfach eine fertige Lösung hinklatschen...
Oh, ich sehe gerade, mein Ansatz, alle umgekehrten Zeichen zu entfernen, ist in Bezug auf die Aufgabenstellung und allgemein zu kompliziert... Sorry for that.
 
mihe7

mihe7

@xImMonti Bei 1. und 4. ist vermutlich die Länge gemeint und 5. ist nicht ganz richtig, denn Du hast das erste Zeichen aus s1 bereits in 3. entfernt.
 
X

xImMonti

Ach ich gebe auf. Ich lass mir das nochmal in der Vorlesung erklären ich blicke gar nicht mehr durch
 
mihe7

mihe7

nein nur der eine auf den der char zutrifft auch wenn es mehrere davon gibt
OK.

Also:
Code:
Wiederhole so lange s1 und s2 gleich lang und nicht leer sind {
    c := erstes Zeichen aus s1
    entferne alle Vorkommen von c aus s1 und s2
}
Gib zurück ob s1 und s2 leer sind.
Einverstanden?
 
mihe7

mihe7

In dem Fall bietet sich eine while-Schleife an - es taucht ja kein Index (bzw. Zählvariable) auf.
 
X

xImMonti

bekomme es immernoch nicht auf die Kette.. könntest du mir zeigen wie das funkioniert?
 
J

JustNobody

bekomme es immernoch nicht auf die Kette.. könntest du mir zeigen wie das funkioniert?
Was hast du denn bisher hin bekommen? In #50 steckt ja schon fast alles:
Code:
Wiederhole so lange s1 und s2 gleich lang und nicht leer sind {
    c := erstes Zeichen aus s1
    entferne alle Vorkommen von c aus s1 und s2
}
Gib zurück ob s1 und s2 leer sind.
Also hast Du da doch:

Code:
while (#s1 und s1 gleich lang# && #s1 und s2 nicht leer#) {
  char c = #erstes Zeichen aus s1#
  s1 = #s1 ohne c#
  s2 = #s2 ohne c#
}
return #s1 leer# && #s2 leer#
Jetzt muss du nur noch die Bereiche zwischen den #..# mit gültigem java code füllen...
Was hast Du denn da jeweils geschafft? Gib da mal an, was Du versucht hast ....
 
Thema: 

Anagramm mit Strings und Methode

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben