工商局网站做年报,手机和电脑同步的进销存软件,电商运营年终总结ppt,菠菜网站怎么做题目的意思大概是有两个字符串#xff0c;其中的#表示退格键#xff0c;让比较最后两个字符串是否相当。
很容易想到的思路就是用一个栈进行模拟这个过程#xff0c;特别需要注意如果一个串是空串也是可以退格的。
但是很容易想到的另一个特性就是#xff0c;前面的字符有…题目的意思大概是有两个字符串其中的#表示退格键让比较最后两个字符串是否相当。
很容易想到的思路就是用一个栈进行模拟这个过程特别需要注意如果一个串是空串也是可以退格的。
但是很容易想到的另一个特性就是前面的字符有可能被后面的退格符删去但是如果如果从后往前进行遍历的话那么一个字符一旦保留就不会被删除我们比较两个字符串保留下来的字符一旦发现不相等就直接返回。
总体来讲就是双指针加逆序遍历。
其实看到这个题我直接就想到双指针加逆序遍历了。但是昨天晚上也不知道是因为困了还是什么原因写了二十分钟写的都是错的。关键是对删除的过程理解的不够深刻我们得到的保留的下来的字符应该有两个特征
不是#后面没有#来删除它 抓住这两个特征如果有一个特征不满足就要继续删除直到删除过程结束。 中午写了一下直接过了果然还是白天头脑清晰一点。
class Solution {
public:bool backspaceCompare(string S, string T) {int i S.size()-1; int j T.size()-1;int iNum 0, jNum 0;while(i0 || j0){while(i0 (S[i]# || iNum 0)){if(S[i] #) iNum;else --iNum;--i;}while(j0 (T[j]# || jNum 0)){if(T[j] #) jNum;else --jNum;--j;}if(i0 j0) return true;if(i0 j0 || i0 j0) return false;if(S[i] ! T[j]) return false;--i; --j;}return true;}
};看了一下题解大概和题解写的差不多但是我在上面循环删除部分写的比题解稍微好一点题解在最后的判断写的比我好。