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