重构字符串,使用栈,使用
build(S)和build(T)
构造取出了退格和被删除字符后的字符串
然后比较它们是否相等。
//重构字符串
//使用栈,使用build(S)和build(T)构造取出了退格和被删除字符后的字符串
//然后比较它们是否相等
public boolean backspaceCompare1(String S, String T){
return build(S).equals(build(T));
}
//在build(S)中,使用栈存储每次输入的字符
public String build(String S){
Stack<Character> ans = new Stack<>();
for(char c:S.toCharArray()){
if(c!='#'){
ans.push(c);
}else if(!ans.empty()){
ans.pop();
}
}
return String.valueOf(ans);
}
2020/8/16
使用栈
// 比较含空格的字符串是否相等
public boolean backspaceCompare(String S, String T) {
if(S==null&&T==null) return true;
if(S==null||T==null) return false;
return fun(S).equals(fun(T));
}
// 使用栈解决问题
public String fun(String s){
char[] t = s.toCharArray();
Stack<Character> stack = new Stack();
for(int i=0;i<t.length;i++){
if(t[i]=='#') {
if(!stack.isEmpty())
stack.pop();
} else stack.push(t[i]);
}
StringBuffer sb = new StringBuffer();
while (!stack.isEmpty()) sb.append(stack.pop());
return new String(sb.reverse());
}
双指针