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

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ß
#3
vote_ok
von JKooP (18090 Punkte) - 21.05.2021 um 21:53 Uhr
NET 5.x; C# 9.x; VS-2019
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.Linq;

var lst = new List<(string s, string t)>
{
    ("ab#c", "ae#c"), ("ab##", "e#f#"), ("a#c", "ac#"), ("####", "###a#"), ("abcdefg", "abcder#fr#g")
};

lst.Select(x => BackspaceCompare(x.s, x.t)).ToList().ForEach(Console.WriteLine);

bool BackspaceCompare(string s, string t)
{
    if (s == t) return true;

    List<char> GetCleaned(string x)
    {
        var l = x.ToList();

        while (l.Contains('#'))
        {
            int i = l.IndexOf('#');
            int t = i != 0 ? 1 : 0;
            l.RemoveRange(i - t, 1 + t);
        }
        return l;
    }

    return GetCleaned(s).SequenceEqual(GetCleaned(t));
}

Kommentare:

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

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

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.