给定 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只含有小写字母以及字符'#'
进阶:
- 你可以用
O(n)的时间复杂度和O(1)的空间复杂度解决该问题吗?
public class BackspaceCompare {
public static void main(String[] args) {
// String s = "ab#c";
// String t = "ad#c";
// String s ="xywrrmp";
// String t ="xywrrmu#p";
// String s ="ab##";
// String t = "c#d#";
String s = "bxj##tw";
String t = "bxj###tw";
boolean b = backspaceCompare(s, t);
System.out.println(b);
}
public static boolean backspaceCompare(String s, String t) {
int count1 =0;
String s2 = "";
for (int i = s.length()-1; i >=0; i--) {
char c = s.charAt(i);
if(c == '#'){
count1++;
continue;
}else if(count1 > 0){
count1--;
continue;
}
s2 = c+s2;
}
int count2 =0;
String t2 = "";
for (int i = t.length()-1; i >=0; i--) {
char c = t.charAt(i);
if(c == '#'){
count2++;
continue;
}else if(count2 > 0){
count2--;
continue;
}
t2 = c+t2;
}
return s2.equals(t2);
}
}