问题描述
给定 s
和 t
两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true
。#
代表退格字符。
注意:如果对空文本输入退格字符,文本继续为空。
提示:
1 <= s.length, t.length <= 200
s 和 t 只含有小写字母以及字符 '#'
进阶:
你可以用 O(n)
的时间复杂度和 O(1)
的空间复杂度解决该问题吗?
示例
示例 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"。
解题思路
本题可以先比较两个字符串 s 和 t 删除字符之后的长度,如果这两个字符串长度不同,直接返回 false 。
class Solution {
public:
bool backspaceCompare(string s, string t) {
int a = 0, b = 0;
for(int i = 0; i < s.size(); i++){
if(s[i] == '#'){
a--;
if(a < 0){
a = 0;
}
}
else{
s[a++] = s[i];
}
}
for(int i = 0; i < t.size(); i++){
if(t[i] == '#'){
b--;
if(b < 0){
b = 0;
}
}
else{
t[b++] = t[i];
}
}
if(a != b){
return false;
}
for(int i = 0; i < a; i++){
if(s[i] != t[i]){
return false;
}
}
return true;
}
};
标签:844,false,示例,++,力扣,int,true,退格
From: https://www.cnblogs.com/greatestchen/p/16942623.html