ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

lc.647 回文子串+扩展

2022-05-17 11:31:56  阅读:42  来源: 互联网

标签:子串 count int res ++ lc.647 str 回文 size


回文子串

1.dp法

class Solution {
public:
    int countSubstrings(string s) {
        int count = 0;
        vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));
        for(int i = s.size()-1; i >= 0; i--)
        {
            for(int j = i; j < s.size(); j++)
            {
                if(s[i] == s[j] && (j - i <= 1 || dp[i+1][j-1]))
                {
                    count++;
                    dp[i][j] = true;
                }
            }
        }
        return count;
    }
};

2.中心扩散法

class Solution {
public:
    int countSubstrings(string s) {
        int res = 0;
        for(int i = 0; i < s.size(); i++)
        {
            res += extend(s, i, i);
            res += extend(s, i, i+1);
        }
        return res;
    }

    int extend(const string s, int l, int r)
    {
        int count = 0;
        while(l >= 0 && r < s.size() && s[l] == s[r])
        {
            count++;
            l--, r++;
        }    
        return count;
    }
};

3.中心扩散并输出

class Solution {
public:

    string str;
    int countSubstrings(string s) {
        vector<string> ans; 
        int res = 0;
        for(int i = 0; i < s.size(); i++)
        {
            str.clear();
            res += extend(s, i, i, str, ans);
            str.clear();
            res += extend(s, i, i+1, str, ans);
        }
        for(auto i : ans)
            cout << i << ' ';
        return res;
    }

    int extend(const string s, int l, int r, string &str, vector<string>& ans)
    {
        int count = 0;
        while(l >= 0 && r < s.size() && s[l] == s[r])
        {
            str = s.substr(l, r-l+1);
            ans.push_back(str);
            count++;
            l--, r++;
        }    
        return count;
    }
};

标签:子串,count,int,res,++,lc.647,str,回文,size
来源: https://www.cnblogs.com/sm1le/p/16280132.html

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有