给定 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 <= 200s 和 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();
- }
- }
以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!