相较于移除字符,这里并不是遍历到等于目标值的时删除当前值,而是遍历到目标值时删除前一个值,因此在双指针移动时,移动到目标值时并不能只移动快指针,因为快指针要覆盖的是上一个值,所以慢指针要回退。
class Solution {
public:
string Getstring(string s)
{
int j = 0;
for(int i = 0;i < s.size();i ++)
{
if(s[i] != '#')
{
s[j ++] = s[i];
}
else
if(j > 0) j --;
}
s = s.substr(0,j);
return s;
}
bool backspaceCompare(string s, string t) {
s = Getstring(s);
t = Getstring(t);
return s == t;
}
};