Leetcode 844 Backspace String Compare

Given two strings s and t, return true if they are equal when both are typed into empty text editors. ‘#’ means a backspace character.

Note that after backspacing an empty text, the text will continue empty.

Follow-up: Can you solve it in O(n) time and O(1) space?

Input: s = "ab#c", t = "ad#c"
Output: true
Explanation: Both s and t become "ac".
Input: s = "ab##", t = "c#d#"
Output: true
Explanation: Both s and t become "".
Input: s = "a##c", t = "#a#c"
Output: true
Explanation: Both s and t become "c".
  • Burada bize iki string veriliyor.# işareti kendinden önceki karakterin silinmesi anlamına geliyor.Bu durumda bu iki stringin silme işlemleri tamamlandıktan son hali eşit ise True değil ise False dönmemizi istiyor.
  • Burada izlenecek yol Stack yapısını kullanmak olabilir. s1 ve s2 adında iki liste oluşturulur.
  • İlk string içinde dolaşılırken karakter ‘#’ ve listede eleman varsa listeden son eleman çıkarılır.Karakter ‘#’ ve liste boş ise devam edilir.Karakter ‘#’ farklı ise elimizdeki karakter listeye eklenir.
  • Bu işlem iki string içinde yapılıp s1 ve s2 karşılaştırılır.
   def backspaceCompare(self, S, T):
        s1, s2 = [], []
        for i in range(len(S)):
            if S[i] == '#' and s1:
                s1.pop()
            elif S[i] == '#':
                continue
            else:
                s1.append(S[i])
        
        for j in range(len(T)):
            if T[j] == '#' and s2:
                s2.pop()
            elif T[j] == '#':
                continue
            else:
                s2.append(T[j])
        
        return s1 == s2