题目
给定 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 只含有小写字母以及字符 '#'。
解题思路
利用栈重建字符串,遇到退格符,推出上次输入的字符。
C++解法
#include <iostream>
#include <vector>
#include <map>
#include <set>
using namespace std;
class Solution {
public:
vector<char> backspaced(string S) {
vector<char> s;
for (auto c : S) {
if (c == '#') {
if (!s.empty()) {
s.pop_back();
}
} else {
s.push_back(c);
}
}
return s;
}
bool backspaceCompare(string S, string T) {
return backspaced(S) == backspaced(T);
}
};
int main(int argc, const char * argv[]) {
// insert code here...
Solution solution;
cout << solution.backspaceCompare("ab#c", "ad#c") << endl;
cout << solution.backspaceCompare("ab##", "c#d#") << endl;
cout << solution.backspaceCompare("a#c", "b") << endl;
cout << solution.backspaceCompare("#a#c", "a##c") << endl;
return 0;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/backspace-string-compare