给定 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”。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/backspace-string-compare
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public static boolean backspaceCompare(String S, String T) {
//创建两个栈来存储字符
Stack<Character> stack_s=new Stack<>();
Stack<Character> stack_t=new Stack<>();
char[] s_array=S.toCharArray();
char[] t_array=T.toCharArray();
for(int i=0;i<S.length();i++){
if(s_array[i]=='#'){
//判断是否遇到'#'
if(!stack_s.isEmpty())//如果当前栈不为空,则弹出栈顶元素
stack_s.pop();
}
else
stack_s.push(s_array[i]);//如果不是'#'字符则把该字符进栈
}
for(int i=0;i<T.length();i++){
//判断是否遇到'#'
if(t_array[i]=='#'){
if(!stack_t.isEmpty())//如果当前栈不为空,则弹出栈顶元素
stack_t.pop();
}
else
stack_t.push(t_array[i]);//如果不是'#'字符则把该字符进栈
}
while (!stack_s.isEmpty()&&!stack_t.isEmpty()){
if (stack_s.peek()!=stack_t.peek()){//判断栈顶元素是否相同
return false;
}
stack_s.pop();
stack_t.pop();
}
return stack_s.isEmpty()&&stack_t.isEmpty();
}
}