给定 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
只含有小写字母以及字符'#'
。
题目标签:Stack / Two Pointers
题目链接:LeetCode / LeetCode中国
Language | Runtime | Memory |
---|---|---|
cpp | 4 ms | 8.7 MB |
class Solution {
public:
void toStack(string& s, stack<char>& stk) {
for (char c : s) {
if (c == '#') {
if (!stk.empty()) {
stk.pop();
}
} else {
stk.push(c);
}
}
}
bool backspaceCompare(string S, string T) {
stack<char> ss, st;
toStack(S, ss);
toStack(T, st);
while (!ss.empty() && !st.empty()) {
char a = ss.top(); ss.pop();
char b = st.top(); st.pop();
if (a != b) return false;
}
if (ss.empty() && st.empty()) return true;
else return false;
}
};