提示:以下是本篇文章正文内容,下面案例可供参考
1.自己的暴力解法
无
2.自己的进阶解法
class Solution {
public:
bool backspaceCompare(string s, string t) {
string S, T;
int ptr = 0;
while (ptr <= s.size() - 1)
{
if (s[ptr] != '#') S.push_back(s[ptr]);
else if (S.size() > 0) S.pop_back();
++ptr;
}
ptr = 0;
while (ptr <= t.size() - 1)
{
if (t[ptr] != '#') T.push_back(t[ptr]);
else if (T.size() > 0) T.pop_back();
++ptr;
}
if (S == T) return true;
else return false;
}
};
3.自己的库函数解法
无
4.题解的暴力解法
无
5.题解的进阶解法
class Solution {
public:
string build(string str)
{
string STR;
for (char ch : str)
{
if (ch != '#') STR.push_back(ch);
else if (!STR.empty()) STR.pop_back();
}
return STR;
}
bool backspaceCompare(string s, string t) {
return build(s) == build(t);
}
};
6.总结
可以多使用C++11里的新循环法。有重复代码要记得总结成一个函数。