题目:比较含退格的字符串(力扣844)
- 给定 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 只含有小写字母以及字符 ‘#’
进阶:
- 你可以用 O(n) 的时间复杂度和 O(1) 的空间复杂度解决该问题吗?
代码
bool backspaceCompare(char * s, char * t){
int top1 = 0;
int top2 = 0;
int i = 0;
for(;s[i] != '\0';i++){
if(s[i] == '#'){
if(top1 >= 1){
top1 --;
}
}else{
s[top1 ++] = s[i];
}
}
for(i = 0;t[i] != '\0';i++){
if(t[i] == '#'){
if(top2 >= 1){
top2 --;
}
}else{
t[top2 ++] = t[i];
}
}
if(top1 == top2){
for(i = 0;i < top1;i++){
if(s[i] != t[i]){
return false;
}
}
return true;
}
return false;
}