C# :: Aufgabe #397 :: Lösung #2

4 Lösungen Lösungen öffentlich
#397

String-Vergleich mit Rücktaste/Backspace

Anfänger - C# von JKooP - 12.05.2021 um 15:38 Uhr
Gegeben sind zwei Strings (Texte) bestehend aus einer Anzahl (<100) Kleinbuchstaben (a-z) und
Backspaces (Rücktastenzeichen) welche hier als Hashtag/Raute (#) dargestellt werden.
Dabei können die Strings unterschiedlicher Länge sein.
Ziel soll es sein zu überprüfen, ob die beiden Strings (s1, s2) identisch sind.

Beispiele:

s1 = ab#c
s2 = ae#c
Lösung: true ("ac" == "ac"), denn Backspace löscht in s1 das b und in s2 das e

s1 = ab##
s2 = e#f#
Lösung: true ("" == ""), denn Backspace löscht in s1 zuerst das b und dann das a und in s2 zuerst das e und dann das f

s1 = a#c
s2 = ac#
Lösung: false ("c" != "a") , denn Backspace löscht in s1 das a und in s2 das c

s1 = ####
s2 = ###a#
Lösung: true

s1 = abcdefg
s2 = abcder#fr#g
Lösung: true

Schreibe eine Methode/Funktion, die für obige Aufgabenstellung als Ergebnis true/false liefert.

Viel Spaß
#2
vote_ok
von manoloForead (390 Punkte) - 18.05.2021 um 01:38 Uhr
Quellcode ausblenden C#-Code
private bool CompareStrings(string s1, string s2)
{
    // Wahr, wenn beide Strings gleich sind
    return RemoveBackspaces(s1) == RemoveBackspaces(s2);
}

// Helfer-Funktion        
private string RemoveBackspaces(string input)
{
    // Rückgabe-String
    string output = "";

    // Für jeden einzelnen Buchstaben...            
    foreach (var c in input)
    {
        // Wenn der Buchstabe kein '#' ist, dann an den Rückgabe-String anhängen
        if (c != '#')
            output += c;
        // Wennn der Buchstabe ein '#' ist, dann...
        else
        {
            // Wenn der Rückgabe-String mindestens 1 Zeichen enthält, das letzte Zeichen entfernen
            if (output.Length > 0)
                output = output.Substring(0, output.Length - 1);
        }
    }

    return output;
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
1988225

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.