给定 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
只含有小写字母以及字符'#'
思路:用栈来保存S和T两个字符串,遇到'#'就出栈一个元素(要判断此时栈是否为空)
class Solution {
public boolean backspaceCompare(String S, String T) {
Stack<Character> s1 = new Stack<>();
Stack<Character> t1 = new Stack<>();
for(int i =0 ;i<S.length() ;i++){
if(S.charAt(i) == '#') {
if(!s1.isEmpty()) s1.pop();
}
else s1.push(S.charAt(i));
}
for(int i =0 ;i<T.length() ;i++){
if(T.charAt(i) == '#'){
if(!t1.isEmpty()) t1.pop();
}
else t1.push(T.charAt(i));
}
if(s1.size() != t1.size()) return false;
while(!s1.isEmpty() && !t1.isEmpty()){
if(s1.pop() != t1.pop()) return false ;
}
if(!s1.isEmpty() || !t1.isEmpty()) return false;
else return true;
}
}