LeetCode 647 Palindromic Substrings

来源:互联网 发布:武器装备上的单片机 编辑:程序博客网 时间:2024/06/05 11:51

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:
The input string length won’t exceed 1000.
动态规划算法——求回文子串,关键的地方就是发现一个字符串i~j是回文字符串,那么s[i]==s[j]且串i+1~j-1也是回文字符串。两层遍历,时间复杂度为o(n^2)

class Solution {public:    int countSubstrings(string s) {        vector < vector<int>> dp(s.size(), vector<int>(s.size(), 0));        int count = 0;        for (int i = s.size() - 1; i >= 0; i--) {            for (int j = i; j < s.size(); j++) {                if (i == j) {                    dp[i][j] = 1;                    count++;                }                else if (j - i == 1&&s[i]==s[j]) {                    dp[i][j] = 1;                    count++;                }                else if(s[i]==s[j]&&dp[i+1][j-1]){                    dp[i][j] = 1;                    count++;                }                else {                    dp[i][j] = 0;                }            }        }        return count;    }};
原创粉丝点击