题目
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。
示例1:
1 | 输入:S = "ab#c", T = "ad#c" |
示例2:
1 | 输入:S = "ab##", T = "c#d#" |
示例3:
1 | 输入:S = "a##c", T = "#a#c" |
示例4:
1 | 输入:S = "a#c", T = "b" |
提示:
- 1 <= S.length <= 200
- 1 <= T.length <= 200
- S 和 T 只含有小写字母以及字符 ‘#’。
解法
解法一:
使用栈,先入栈,碰到#
就出栈
Java
1 | class Solution { |
解法二:
从字符串的尾部开始遍历,统计遇到的#
符号个数记为count,当下一个字符不是#的时候,从该字符开始计算,跳过count个字符。当count为0,并且当前字符不为#
时,才算作有效字符。
比如字符串123##22
当从字符串末尾开始遍历的时候,遇到了两个#
,此时count为2,那么代表它要跳过两个字符,在跳过的同时,count自减。因此,当字符1
的时候,count为0,那么1
就是有效字符
Java
1 | public boolean backspaceCompare(String S, String T) { |