Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character.
Note that after backspacing an empty text, the text will continue empty.
Example 1:
Input: S = "ab#c", T = "ad#c"
Output: true
Explanation: Both S and T become "ac".
Example 2:
Input: S = "ab##", T = "c#d#"
Output: true
Explanation: Both S and T become "".
Example 3:
Input: S = "a##c", T = "#a#c"
Output: true
Explanation: Both S and T become "c".
Example 4:
Input: S = "a#c", T = "b"
Output: false
Explanation: S becomes "c" while T becomes "b".
Note:
- 1 <= S.length <= 200
- 1 <= T.length <= 200
- S and T only contain lowercase letters and ‘#’ characters.
Follow up:
- Can you solve it in O(N) time and O(1) space?
解题思路: 扫描一次直接对原字符串进行退格然后比较
class {
public:
bool backspaceCompare(string S, string T);
}
void backspaceHelper(string& s) {
string::iterator it = s.begin();
while (it != s.cend()) {
if (*it == '#') {
s.erase(it);
if (it != s.begin()) {
s.erase(it - 1);
it--;
}
continue;
}
it++;
}
}
bool
Solution::backspaceCompare(string S, string T) {
backspaceHelper(S);
backspaceHelper(T);
return S == T;
}