题目
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
示例 :
输入:S = “ab#c”, T = “ad#c”
输出:true
解释:S 和 T 都会变成 “ac”。
解题思路
利用栈解决,扫描字符串,遇到"#"时,弹栈即可
代码
public static boolean backspaceCompare(String s, String t) {
return Objects.equals(transform(s),transform(t));//比较两个处理完成的字符串是否相等即可
}
//处理字符串的函数
public static String transform(String s){
Stack<Character> stack = new Stack<>(); //实例化一个栈
for (int i = 0; i < s.length(); i++) { //循环遍历字符串
if(s.charAt(i) == '#'){ //如何遇到#
if(stack.empty()){ //如果栈是空的,直接进入下次循环
continue;
}
//弹栈
stack.pop();
continue;
}
//否则,向栈内压入元素
stack.push(s.charAt(i));
}
//返回处理完成的字符串
return stack.toString();
}