思路:
输入 str1="xy#z", str2="xzz#", 返回为 True, 使用了回退符之后,str1 和str2 都变成了xz,所以两个字符串相等。
需要一个函数返回应用过退格符之后的字符串
维护一个退格符计数器, 使用一个指针从右向左遍历字符串,
若字符是退格符 # , 计数器 +1.
若字符不是退格符, 此时若计数器==0,返回当前字符
若计数器 > 0, 计数器 -1
代码:
In [12]: def backspace_compare(str1, str2):
...: def get_next_valid_char(string):
...: backspace_count = 0
...: for char in string[::-1]:
...: if char == '#':
...: backspace_count += 1
...: continue
...: if not backspace_count:
...: yield char
...: else:
...: backspace_count -= 1
...:
...: return list(get_next_valid_char(str1)) == list(get_next_valid_char(str2))
...:
In [13]: backspace_compare("xy#z", "xzz#")
Out[13]: True
In [14]: backspace_compare("xp#", "xyz##")
Out[14]: True
In [15]: backspace_compare("xywrrmp", "xywrrmu#p")
Out[15]: True