leetcode 844. 比较含退格的字符串

2023.6.17

leetcode 844. 比较含退格的字符串_第1张图片

         这题使用的是暴力解法,大致思路是用erase方法将字符串s和t中的#以及#之前的字符去除掉,最后对比两个字符串是否相同。

        下面看下我略显冗余的代码:

class Solution {
public:
    bool backspaceCompare(string s, string t) 
    {
        //去除s中的#以及#之前的字符
        for(int i=0; i

        双指针法:

class Solution {
public:
    bool backspaceCompare(string s, string t) {
        int i = s.size()-1;
        int j = t.size()-1;
        int skip_s = 0;
        int skip_t = 0;

        while(i>=0 || j>=0)
        {
            while(i>=0)
            {
                if(s[i] == '#')
                {
                    skip_s++;
                    i--;
                }
                else if(skip_s)
                {
                    skip_s--;
                    i--;
                }
                else break;
            }
            while(j>=0)
            {
                if(t[j] == '#')
                {
                    skip_t++;
                    j--;
                }
                else if(skip_t)
                {
                    skip_t--;
                    j--;
                }
                else break;
            }
            if(i>=0 && j>=0)
            {
                if(s[i] != t[j]) return false;
            }
            else if(i>=0 || j>=0) return false;

            i--;
            j--;
        }
        return true;
    }
};

        能理解   但是估计临场应该写不出来

你可能感兴趣的:(leetcode专栏,leetcode,算法,职场和发展)