844 Backspace String Compare
1. Question
Given two strings S
andT
, return if they are equal when both are typed into empty text editors.#
means a backspace character.
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
andT
only contain lowercase letters and'#'
characters.
Follow up:
Can you solve it in
O(N)
time andO(1)
space?
2. Implementation
(1) Stack
思路: 用StringBuilder模拟stack的操作,当遇到"#"而且stringbuilder不为空时,将最后一个character删除
class Solution {
public boolean backspaceCompare(String S, String T) {
return getString(S).equals(getString(T));
}
public String getString(String s) {
StringBuilder res = new StringBuilder();
for (char c : s.toCharArray()) {
if (c != '#') {
res.append(c);
}
else if (res.length() > 0) {
res.deleteCharAt(res.length() - 1);
}
}
return res.toString();
}
}
3. Time & Space Complexity
(1) Stack: 时间复杂度O(n), 空间复杂度O(1)
Last updated
Was this helpful?