844. 比较含退格的字符串
给定
S
和T
两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。#
代表退格字符。
示例 1:
输入:S = "ab#c", T = "ad#c" 输出:true 解释:S 和 T 都会变成 “ac”。
示例 2:
输入:S = "ab##", T = "c#d#" 输出:true 解释:S 和 T 都会变成 “”。
示例 3:
输入:S = "a##c", T = "#a#c" 输出:true 解释:S 和 T 都会变成 “c”。
示例 4:
输入:S = "a#c", T = "b" 输出:false 解释:S 会变成 “c”,但 T 仍然是 “b”。
提示:
1 <= S.length <= 200
1 <= T.length <= 200
S
和T
只含有小写字母以及字符'#'
。
//时间复杂度O(n), 空间复杂度O(n)
class Solution {
public:
bool backspaceCompare(string S, string T) {
stack<char> st1, st2;
for(char c : S) {
if(c != '#') st1.push(c);
else if(!st1.empty()) st1.pop();
}
for(char c : T) {
if(c != '#') st2.push(c);
else if(!st2.empty()) st2.pop();
}
if(st1.size() != st2.size()) return false;
while(!st1.empty()) {
if(st1.top() != st2.top()) return false;
st1.pop();
st2.pop();
}
return true;
}
};
- 使用栈,当遇到字母就入栈,遇到退格符时就出栈;
- 注意处理栈空时遇到退格符的情况;
- 对S和T各维护一个栈,遍历完成后返回两个栈是否相等。
2019/07/11 10:28