0844.比较含退格的字符串
描述
给定 S
和 T
两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 #
代表退格字符。
实例
输入:S = "ab#c", T = "ad#c"
输出:true
解释:S 和 T 都会变成 “ac”。
输入:S = "ab##", T = "c#d#"
输出:true
解释:S 和 T 都会变成 “”。
输入:S = "a##c", T = "#a#c"
输出:true
解释:S 和 T 都会变成 “c”。
输入:S = "a#c", T = "b"
输出:false
解释:S 会变成 “c”,但 T 仍然是 “b”。
提示
1 <= S.length <= 200
1 <= T.length <= 200
S
和T
只含有小写字母以及字符'#'
。
题解
- 对于每个字符串,遍历
- 对于每个字符,如果是
#
且栈不空则出栈 - 否则入栈当前字符
- 对于每个字符,如果是
- 比较两个字符串获得的
stack
,相同则true
否则false
public boolean backspaceCompare(String S, String T) {
Stack<Character> stackS = dealStr4_844(S);
Stack<Character> stackT = dealStr4_844(T);
if (stackS.size() != stackT.size())
return false;
for (int i=0;i<stackS.size();i++){
if (stackS.pop() != stackT.pop())
return false;
}
return true;
}
public Stack dealStr4_844(String s){
Stack<Character> stack = new Stack<>();
char nowChar;
for (int i=0;i<s.length();i++){
nowChar = s.charAt(i);
if (nowChar == '#'){
if (!stack.empty())
stack.pop();
} else
stack.push(nowChar);
}
return stack;
}