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