leetcode844.比较含退格的字符串
目录
leetcode844.比较含退格的字符串
题目:
给定
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) {
Stack<Character> stack1 = new Stack<>();
Stack<Character> stack2 = new Stack<>();
char c1[] = s.toCharArray();
char c2[] = t.toCharArray();
for (int i = 0; i < c1.length; i++) {
if (c1[i] == '#' && !stack1.isEmpty()) {
stack1.pop();
} else if(c1[i]!='#'){
stack1.push(c1[i]);
}
}
for (int i = 0; i < c2.length; i++) {
if (c2[i] == '#' && !stack2.isEmpty()) {
stack2.pop();
} else if(c2[i]!='#'){
stack2.push(c2[i]);
}
}
String res1 = "";
String res2 = "";
int s1 = stack1.size();
int s2 = stack2.size();
for (int i = 0; i < s1; i++) {
res1 += stack1.pop();
}
for (int i = 0; i < s2; i++) {
res2 += stack2.pop();
}
System.out.println(res1);
System.out.println(res2);
return res1.equals(res2);
}
}
解释:
通过设置俩个栈来进行解决,对于碰到#号且栈不为空时,将上一个元素弹出,还有需要注意输入的是字符串,我们把它放置到字符数组内,方便后续操作。
注意:
在最后俩个for循环时,如果将size直接写入判断语句,随着元素的弹出,size会发生改变,因此需要在外面定义好。