844. 比较含退格的字符串
问题
给定
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”。
思路
用栈实现#出栈,其余入栈,比较两个字符串遍历完后,剩余字符串是否相等。
import java.util.*;
class Solution {
public boolean backspaceCompare(String S, String T) {
Stack<Character> stack=new Stack<>();
for(int i=0;i<S.length();i++) {
char c=S.charAt(i);
if(c!='#')
stack.push(c);
else if(!stack.isEmpty())
stack.pop();
}
StringBuilder sb1=new StringBuilder();
while(!stack.isEmpty()) {
sb1.append(stack.pop());
}
for(int i=0;i<T.length();i++) {
char c=T.charAt(i);
if(c!='#')
stack.push(c);
else if(!stack.isEmpty())
stack.pop();
}
StringBuilder sb2=new StringBuilder();
while(!stack.isEmpty()) {
sb2.append(stack.pop());
}
if(sb1.toString().equals(sb2.toString())) {
return true;
}
return false;
}
}