Description
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.
Example 1:
Input: s = "ab#c", t = "ad#c" Output: true Explanation: Both s and t become "ac".
Example 2:
Input: s = "ab##", t = "c#d#" Output: true Explanation: Both s and t become "".
Example 3:
Input: s = "a#c", t = "b" Output: false Explanation: s becomes "c" while t becomes "b".
Constraints:
1 <= s.length, t.length <= 200
s
andt
only contain lowercase letters and'#'
characters.
Follow up: Can you solve it in O(n)
time and O(1)
space?
Solution
Python3
class Solution:
def backspaceCompare(self, s: str, t: str) -> bool:
M, N = len(s), len(t)
i, j = M - 1, N - 1
while True:
delCount = 0
while i >= 0 and (delCount > 0 or s[i] == "#"):
if s[i] == '#':
delCount += 1
else:
delCount -= 1
i -= 1
delCount = 0
while j >= 0 and (delCount > 0 or t[j] == "#"):
if t[j] == '#':
delCount += 1
else:
delCount -= 1
j -= 1
if i >= 0 and j >= 0 and s[i] == t[j]:
i -= 1
j -= 1
else:
break
return i == -1 and j == -1