正确代码
根据这一题,掌握数据结构中栈的使用
题目分析:
题目的意思是,在两个字符串中,对于每一个字符串,如果存在’#‘符号,并且它前面有字符,则删除它前面的字符,’#‘号也删除;如果’#‘前面没有字符,则只删除’#'号;之后再比较两个字符串是不是相等(即剩余的元素相同)。
很明显,此题可以使用栈的知识解决:扫描每一个字符串,当读到的字符串中的字符不是’#‘的时候,字符入栈;当读到’#'的时候,如果栈不为空(很重要,千万别忘记判断,如果不进行栈空的判断,当栈空的时候如果进行pop()操作则会报错)的时候,删除栈顶元素;最后对比两个字符串是不是相等。
public boolean backspaceCompare(String S, String T)
{
Stack<Character> stack1 = new Stack<>();
Stack<Character> stack2 = new Stack<>();
for (char c : S.toCharArray())
{
if (c != '#')
stack1.push(c);
else
{
if (!stack1.isEmpty())
stack1.pop();
}
}
for (char c : T.toCharArray())
{
if (c != '#')
stack2.push(c);
else
{
if (!stack2.isEmpty())
stack2.pop();
}
}
return stack1.equals(stack2);
}
原文:https://blog.csdn.net/qq_39360985/article/details/82859183
知识
⭐Stack 文档
https://docs.oracle.com/javase/6/docs/api/java/util/Stack.html
⭐foreach
数组可以用、集合也可以用