您将获得两个字符串s和t,两者都由小写的英文字母组成。您将逐个字符地键入字符串s,从第一个字符到最后一个字符。 > > 特别之处在于,键入字符时,您可以按`Backspace`按钮,而不是按与之对应的按钮。`Backspace`会删除您刚刚键入的最后一个字符(如果您键入的字符串中没有字符,则不执行任何操作)。例如,如果s是"abcbd",并且您按`Backspace`而不是键入第一个和第四个字符,您将获得字符串"bd"(第一次按`Backspace`不删除任何字符,第二次按删除字符"c")。另一个例子,如果s是"abcaa",并且您用`Backspace`键代替最后两个字母,则得到的文本为"a"。 > > 您的任务是确定是否可以通过以上方式,从字符串s获取字符串t.
时间: 2023-05-28 19:06:15 浏览: 173
思路:使用栈来存储字符串s中的字符,每次遇到一个字符,就将其加入栈中,遇到一个Backspace就弹出栈顶元素。最后比较栈中剩余的字符与字符串t是否相同即可。
代码:
```python
class Solution:
def backspaceCompare(self, s: str, t: str) -> bool:
stack_s = []
stack_t = []
for c in s:
if c != "#":
stack_s.append(c)
elif stack_s:
stack_s.pop()
for c in t:
if c != "#":
stack_t.append(c)
elif stack_t:
stack_t.pop()
return stack_s == stack_t
```
时间复杂度:$O(n)$,其中n为字符串长度。
空间复杂度:$O(n)$,需要两个栈来存储字符串s和t中的字符。
阅读全文