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

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ß
#1
vote_ok
von LikeTheShado (60 Punkte) - 18.05.2021 um 12:29 Uhr
Quellcode ausblenden C#-Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace StringVergleich
{
    public partial class Form1 : Form
    {
       
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {


            string s1 = "asc##w";
            string s2 = "asc##w";
            int trim = 0;
            int anz = 0;
            char x2 = '#';

            foreach (char x in s1)
            {
                if (x != x2)
                {
                    trim++;
                }
                else
                {
                    break;
                }
            }     
            
            foreach(char x in s1)
            {
                if (x == '#')
                {
                    anz++;
                }
            }
            s1 = s1.Remove(trim - anz, anz);
            s1 = s1.Replace("#", "");

            trim = 0;
            anz = 0;
            foreach (char x in s2)
            {
                if (x2 != x)
                {
                    trim++;
                }
                else
                {
                    break;
                }
            }

            foreach (char x in s2)
            {
                if (x == '#')
                {
                    anz++;
                }
            }
            s2 = s2.Remove(trim - anz, anz);
            s2 = s2.Replace("#", "");
           
            if(s1 == s2)
            {
                MessageBox.Show("true");
            }
            else
            {
                MessageBox.Show("false");
            }
        }
    }
}




Kommentare:

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

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

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.