一、题目
给定 s
和 t
两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true
。#
代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
示例 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 = "b" 输出:false 解释:s 会变成 "c",但 t 仍然是 "b"。
提示:
1 <= s.length, t.length <= 200
s
和t
只含有小写字母以及字符'#'
二、思路解析
这道题的本质,还是考察我们对栈的特性的运用能力。
我们可以使用栈的数据结构来模拟文本编辑器的行为。遍历字符串,遇到非退格字符就入栈,遇到退格字符就出栈。
最后比较两个字符串是否相等。
三、完整代码
class Solution {
public boolean backspaceCompare(String s, String t) {
return check(s).equals(check(t));
}
public String check(String a){
StringBuffer ret = new StringBuffer();
for(int i = 0; i < a.length(); i++){
char ch = a.charAt(i);
if(ch != '#'){
ret.append(ch);
}else{
if(ret.length() > 0){
ret.deleteCharAt(ret.length() - 1);
}
}
}
return ret.toString();
}
}
以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!