class Solution {
public boolean backspaceCompare(String S, String T) {
if (S == null || T == null) return false;
Stack<Character> stackS = new Stack<Character>();
Stack<Character> stackT = new Stack<Character>();
handleStack(S.toCharArray(), stackS);
handleStack(T.toCharArray(), stackT);
if (stackS.size() != stackT.size()) return false;
if (stackS.size() == stackT.size()) { //Stack inherit size() from Vector class : java.util.Vector.size()
while (!stackS.isEmpty()) {
if (stackS.pop() != stackT.pop()) {
return false;
}
}
}
return true;
}
private void handleStack(char[] x,Stack stackX) { //Use char[] due to S.toCharArray() it array.debug it on Eclipse
for (char c : x) {
if (c == '#') { //don't use "" due to char in " " would be taken as String,not char.Use ' '
if (!stackX.isEmpty()) {
stackX.pop();
}
} else stackX.push(c);
}
}
}
Note:
Stack<Character> stackS = new Stack();
int a = stackS.size();
int java.util.Vector.size()
Returns the number of components in this vector.
Specified by: size() in List, Overrides: size() in AbstractCollection
Returns:
the number of components in this vector

本文介绍了一种使用栈数据结构实现的字符串比较算法,该算法能够处理包含退格字符('#')的字符串,通过逐个字符处理并利用栈进行退格操作,最终比较两个字符串是否相等。文章详细展示了算法的实现过程,包括栈的初始化、字符处理流程及比较逻辑。
455

被折叠的 条评论
为什么被折叠?



