844. 比较含退格的字符串
难度简单131
给定 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”。//思路:建立两个栈分别存储字符数组,如果是#且原栈不为空就弹栈,然后每一个进行比较。
class Solution {
public boolean backspaceCompare(String S, String T) {
Stack<Character> stackS = new Stack<>();
Stack<Character> stackT = new Stack<>();
char[] s = S.toCharArray();
char[] t = T.toCharArray();
for(int i = 0; i <s.length; i++){
if(s[i] != '#'){
stackS.push(s[i]);
}else if(s[i] == '#' && !stackS.isEmpty()){
stackS.pop();
}
}
for(int i = 0; i <t.length; i++){
if(t[i] != '#'){
stackT.push(t[i]);
}else if(t[i] == '#' && !stackT.isEmpty()){
stackT.pop();
}
}
if(stackS.isEmpty() && stackT.isEmpty()){
return true;
}else if(!stackS.isEmpty() && stackT.isEmpty()){
return false;
}else if(stackS.isEmpty() && !stackT.isEmpty()){
return false;
}else{
if(stackS.size() != stackT.size()){
return false;
}else{
while(!stackS.isEmpty() && !stackT.isEmpty()){
if(stackS.pop() != stackT.pop()){
return false;
}
}
}
}
return true;
}
}