class Solution:
def backspaceCompare(self, s: str, t: str) -> bool:
def convert(s):
res = []
for char in s:
if char == '#':
if res:
res.pop()
else:
res.append(char)
return "".join(res)
return convert(s) == convert(t)Where is the length of the string and is the length of the string .
class Solution:
def backspaceCompare(self, s: str, t: str) -> bool:
def convert(s):
res = []
backspace = 0
for i in range(len(s) - 1, -1, -1):
if s[i] == '#':
backspace += 1
elif backspace:
backspace -= 1
else:
res.append(s[i])
return res
return convert(s) == convert(t)Where is the length of the string and is the length of the string .
class Solution:
def backspaceCompare(self, s: str, t: str) -> bool:
def nextValidChar(string, index):
backspace = 0
while index >= 0:
if string[index] == '#':
backspace += 1
elif backspace > 0:
backspace -= 1
else:
break
index -= 1
return index
index_s, index_t = len(s) - 1, len(t) - 1
while index_s >= 0 or index_t >= 0:
index_s = nextValidChar(s, index_s)
index_t = nextValidChar(t, index_t)
char_s = s[index_s] if index_s >= 0 else ""
char_t = t[index_t] if index_t >= 0 else ""
if char_s != char_t:
return False
index_s -= 1
index_t -= 1
return TrueWhere is the length of the string and is the length of the string .
class Solution:
def backspaceCompare(self, s: str, t: str) -> bool:
index_s, index_t = len(s) - 1, len(t) - 1
backspace_s = backspace_t = 0
while True:
while index_s >= 0 and (backspace_s or s[index_s] == '#'):
backspace_s += 1 if s[index_s] == '#' else -1
index_s -= 1
while index_t >= 0 and (backspace_t or t[index_t] == '#'):
backspace_t += 1 if t[index_t] == '#' else -1
index_t -= 1
if not (index_s >= 0 and index_t >= 0 and s[index_s] == t[index_t]):
return index_s == index_t == -1
index_s, index_t = index_s - 1, index_t - 1Where is the length of the string and is the length of the string .