Given two strings S and T , 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?
想法如下
- 用 stack 來組出最後的字串,然後再比較兩個最後的字串是不是一樣
code 如下
Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Solution { | |
public boolean backspaceCompare(String S, String T) { | |
return build(S).equals(build(T)); | |
} | |
private String build(final String str) { | |
Stack<Character> stack = new Stack<>(); | |
for(char c : str.toCharArray()) { | |
if(c != '#') { | |
stack.push(c); | |
} | |
else if(!stack.empty()) { | |
stack.pop(); | |
} | |
} | |
return String.valueOf(stack); | |
} | |
} |
沒有留言:
張貼留言