func backspaceCompare(s string, t string) bool {
// 从后往前遍历才能处理退格#
i, j := len(s) - 1, len(t) - 1
skipS, skipT := 0, 0
for i >= 0 || j >= 0 {
// 先处理退格
for i >= 0 {
if s[i] == '#' {
skipS++; i--
} else if skipS > 0 {
skipS--; i--
} else {
break
}
}
for j >= 0 {
if t[j] == '#' {
skipT++; j--
} else if skipT > 0 {
skipT--; j--
} else {
break
}
}
// 在不是退格的情况下对比字符
if i >=0 && j >= 0 && s[i] != t[j] {
return false
}
// 当剩下的两个字符串其中一个为空,另一个不为空时,无法继续比较,返回false
if (i >= 0) != (j >= 0) {
return false
}
i--; j--
}
return true
}