美文网首页leetcode
647. 回文子串

647. 回文子串

作者: geaus | 来源:发表于2020-08-27 22:20 被阅读0次

    给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。
    具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

    示例 1:
    
    输入:"abc"
    输出:3
    解释:三个回文子串: "a", "b", "c"
    示例 2:
    
    输入:"aaa"
    输出:6
    解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"
    

    中心扩展法。

        int countSubstrings(string s) {
            int ret = 0;
            for(int i=0; i<s.size(); i++){
                count(s, i, i, ret);
                count(s, i, i+1, ret);
            }
            return ret;
        }
    
        void count(string& s, int start, int end, int& ret){
            while(start>=0 && end<s.size() && s[start]==s[end]){
                ret++;
                start--;
                end++;
            }
        }
    

    相关文章

      网友评论

        本文标题:647. 回文子串

        本文链接:https://www.haomeiwen.com/subject/vinhsktx.html