码迷,mamicode.com
首页 > 其他好文 > 详细

647. Palindromic Substrings

时间:2018-06-16 10:32:33      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:cte   lan   bre   .com   使用   entry   sam   eve   tar   

问题描述:

Given a string, your task is to count how many palindromic substrings in this string.

The substrings with different start indexes or end indexes are counted as different substrings even they consist of same characters.

Example 1:

Input: "abc"
Output: 3
Explanation: Three palindromic strings: "a", "b", "c".

 

Example 2:

Input: "aaa"
Output: 6
Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa".

 

Note:

  1. The input string length won‘t exceed 1000.

 

解题思路:

这道题我使用了跟5 Longest Palindromic Substring一样的做法。

与之不同的是,本题要求返回回文子串的个数:

一个长的回文串,如"aabaa"它除去每个单独的字符,长度大于1的子串有:“aba” “aabaa”两个,即 长度/2

也不要忘记每个单独的字符也是一个回文子串。

 

代码:

class Solution {
public:
    int countSubstrings(string s) {
        if(s.size() < 2)
            return s.size();
        int ret = s.size();
        for(int i = 0; i < s.size(); i++){
            if(i-1 > -1){
                int cur = calPalindrome(s, i-1, i+1);
                ret += cur/2;
            }
            if(i+1 < s.size() && s[i] == s[i+1]){
                int cur = calPalindrome(s, i, i+1);
                ret += cur/2;
            }
        }
        return ret;
    }
private:
    int calPalindrome(string &s, int left, int right){
        int ret = 0;
        while(left > -1 && right < s.size()){
            if(s[left] != s[right]){
                break;
            }
            left--;
            right++;
        }
        return right - left - 1;
    }
};

 

647. Palindromic Substrings

标签:cte   lan   bre   .com   使用   entry   sam   eve   tar   

原文地址:https://www.cnblogs.com/yaoyudadudu/p/9189668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!