https://leetcode.cn/problems/backspace-string-compare/
给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
示例 1:
输入:s = “ab#c”, t = “ad#c”
输出:true
解释:s 和 t 都会变成 “ac”。
示例 2:
输入:s = “ab##”, t = “c#d#”
输出:true
解释:s 和 t 都会变成 “”。
方法1:双指针
class Solution:
def backspaceCompare(self, s: str, t: str) -> bool:
i, j = len(s) - 1, len(t) - 1
skips, skipt = 0, 0
while i >= 0 or j >= 0:
while i >= 0:
if s[i] == '#':
skips += 1
i -= 1
elif skips > 0:
skips -= 1
i -= 1
else:
break
while j >= 0:
if t[j] == '#':
skipt += 1
j -= 1
elif skipt > 0:
skipt -= 1
j -= 1
else:
break
if i >= 0 and j >= 0:
if s[i] != t[j]:
return False
elif i >= 0 or j >= 0:
return False
i -= 1
j -= 1
return True
方法2:重构字符串
class Solution:
def backspaceCompare(self, s: str, t: str) -> bool:
def back(st):
lst = []
for s in st:
if s != '#':
lst.append(s)
elif lst:
lst.pop()
return ''.join(lst)
return back(s) == back(t)