题目:844.比较含退格的字符串
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。
Backspace:退格键,向前删除
Delete:删除键,向后删除
注意:如果对空文本输入退格字符,文本继续为空。
思路:
设计一个方法,保存结果字符串。
解答:
方法一:
class Solution:
def backspaceCompare(self, S: str, T: str) -> bool:
def true_value(a):
res = ""
for i in a:
if i != '#':
res += i
else:
#删除res中的最后一个字符
res = res[:-1]
return res
return true_value(S)==true_value(T)
方法二:双指针法
class Solution:
def backspaceCompare(self, S: str, T: str) -> bool:
#从后向前双指针
sskip=0 #记录s中#的数量
tskip=0 #记录t中#的数量
i=len(S)-1
j=len(T)-1
while(1):
while(i>=0):
if S[i]=='#':
sskip+=1
else:
if sskip>0:
sskip-=1
else:
break
i-=1
while(j>=0):
if T[j]=='#':
tskip+=1
else:
if tskip>0:
tskip-=1
else:
break
j-=1
if i<0 or j<0:
break
if S[i]!=T[j]:
return False
i-=1
j-=1
if (i==-1) and (j==-1):
return True
return False