回文子串(c++实现)

回文子串(c++实现)_第1张图片

原理:

  • 分析回文子串发现,回文子串是以一个字符为中心和两个相同的字符为中心两种情况
  • 回文子串都是在回文中心两边添加相同字符以构成回文串
  • 只要找出回文中心,在两边附加相同字符就可构成回文

C++实现:

int countSubstrings(string s) {
        int len=s.length();
        int sum=0;
        for(int i=0;i<2*len-1;i++) //最多有2*n-1回文中心
        {
            int low=i/2; //回文中心左
            int high=i/2+i%2; //回文中心右
            while(low>=0&&high<len&&s[low]==s[high]) //如果回文中心两边附加的字符相同,则就是回文子串
            {
                low--;
                high++;
                sum++;
            }
        }
        return sum;

你可能感兴趣的:(c++,算法)