题目
关键词
字符串,双指针
代码记录
方法一 重构字符串
两个字符串长度分别为N,M
时间复杂度O(N+M),空间复杂度O(N+M)
class Solution:
def backspaceCompare(self, S: str, T: str) -> bool:
def transfer_str(s):
res=[]
for i in range(len(s)):
cur=s[i]
if cur !='#':
res.append(cur)
else:
if res:
res.pop()
return ''.join(res)
return transfer_str(S)==transfer_str(T)
方法二 双指针
时间复杂度O(N+M),空间复杂度O(1)
class Solution:
def backspaceCompare(self, S: str, T: str) -> bool:
skip_S=0
skip_T=0
pointer_S=len(S)-1
pointer_T=len(T)-1
while pointer_S>=0 or pointer_T>=0:
cur_S=''
while pointer_S>=0:
if S[pointer_S]=='#':
skip_S+=1
pointer_S-=1
else:
if skip_S>0:
skip_S-=1
pointer_S-=1
else:
cur_S=S[pointer_S]
pointer_S-=1
break
cur_T=''
while pointer_T>=0:
if T[pointer_T]=='#':
skip_T+=1
pointer_T-=1
else:
if skip_T>0:
skip_T-=1
pointer_T-=1
else:
cur_T=T[pointer_T]
pointer_T-=1
break
if cur_S!=cur_T:
return False
return True