Alte Klausuraufgabe zu Springs sortieren

canyakan95

Bekanntes Mitglied
Hallo hier ist die Aufgabenstellung:
Implementieren Sie die Methode public static String sortiereZeichen(String str), die die einzelnen Zeichen des Strings str in lexikalisch aufsteigender Reihenfolge zurückgibt.

Beispiel:

Die Rückgabe für "Alles ist schwer" ist: " Aceehillrssstw".

Hinweise:

1) Zur Lösung dürfen Sie folgende Methoden aus der Klasse String verwenden:

 length(): liefert die Länge eines Strings zurück

 charAt(int index): liefert das Zeichen an der Position index zurück

 substring(int beginIndex, int endIndex): liefert den Teilstring beginnend an der Stringposition beginIndex bis zur Position endIndex-1 zurück. Ist beginIndex gleich endIndex, wird ein Leerstring ("") zurückgeliefert.

2) Will man ein Zeichen z in einen String s an der Position pos einfügen, kann man s an der Stelle pos in 2 Teilstrings zerlegen und diese geeignet mit dem neuen Zeichen zusammensetzen.



Mein code nicht vollständig:
Code:
    public static String sortiereZeichen(String str)
    {
        String s="";
        for(int i=0;i<str.length()-1;i++)
        {
            for(int j=0;j<str.length()-1;j++)
            {
                if(str.charAt(j)>str.charAt(j+1))
                {
                   
                }
            }
        }
        return s;
    }

den gesamten string kann ich ja sortieren. aber wie füge ich das gesamte meinem string s ein?
hoffe ihr könnt meinen Code vervollständigen und mir weiterhelfen.
Mit freundlichen Grüßen
 

eldrior

Aktives Mitglied
Um etwas hinten an den String anzufügen könntest du das so machen:
Java:
String s = "Hallo ";
s += "Welt!";

Man kann sich jetzt darüber streiten, ob es die schnellste Methode ist, aber für deinen Usecase ist es absolut ausreichend :)
 

canyakan95

Bekanntes Mitglied
Hey danke für die info. Aber das weiß ich auch.
Ich wollte nur fragen .. Auf die aufgabe bezogen wie ich.. Jetzt.. Das mache das ich meinen string aufbaue mit den substrings usw..
 

Tarrew

Top Contributor
So sollte es gehen:
Java:
    public static String sortiereZeichen(String str)
    {   
        int strLength = str.length();
        int min=0;
        String s="";
        for(int i=0;i<strLength;i++)
        {
            for(int j=0;j<str.length();j++)
            {
                if(str.charAt(j)<str.charAt(min)){
                    min=j;
                }
            }
            s+=str.charAt(min);
            str=str.substring(0,min)+str.substring(min+1);
            min=0;
        }
        return s;
    }

Einfach immer den kleinsten Char suchen, den dann an deinen String s anhängen wie eldrior ja schon geschrieben hatte. Und dann einfach den Char aus dem ursprünglichen String löschen. Bzw. eher gesagt einen neuen String ohne den Buchstaben bauen.
 

canyakan95

Bekanntes Mitglied
hey danke für die Antwort..ja die Methode funktioniert auch.
nur wäre meine letzte frage, die if abfrage kann ich nicht ganz nachvollziehen.
str.charat(j)..das verstehe ich ja j wird immer um 1 erhöht und da bekomme ich immer ein anderes Zeichen..warum vergleichen wir das aber immer mit str.charat(min).. also str.charat(0).
Mit freundlichen Grüßen
 

Tarrew

Top Contributor
Du durchläufst mit der inneren for-Schleife immer deinen String und suchst den kleinsten Char.
Am Anfang gehst du einfach davon aus, dass der kleinste Char am nullten Index steht (min=0).

Sobald du einen kleineren Char findest änderst du min (min=j).
Wenn du also deinen String einmal komplett durchlaufen hast ist min der Index des kleinsten Chars. Den fügst du dann an dein "s" an und setzt min wieder auf 0. Und dann das ganze von vorne.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MQue Springs @Transactional Frameworks - Spring, Play, Blade, Vaadin & Co 4

Ähnliche Java Themen


Oben