每周LeetCode算法题(十二): 647. Palindromic Substrings

来源:互联网 发布:淘宝义卖作文 编辑:程序博客网 时间:2024/05/19 15:24

每周LeetCode算法题(十二)

题目: 647. Palindromic Substrings

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”

解法分析

本题leetcode上归为动态规划一类,但一口气做完并不觉得相关。只是求回文子串数量,分两种情况:子串长度是奇数以及子串长度是偶数即可。

C++代码

class Solution {public:    int countSubstrings(string s) {        int len = s.size();        int ans = 0;        for (int i = 0; i < len; i++) {            int j = 0;            while (i - j >= 0 && i + j < len) {                if (s[i - j] == s[i + j]) {                    ans++;                    j++;                } else {                    break;                }            }        }        for (int i = 0; i < len - 1; i++) {            int j = 0;            if (s[i] != s[i + 1]) {                continue;            }            while (i - j >= 0 && i + 1 + j < len) {                if (s[i - j] == s[i + 1 + j]) {                    ans++;                    j++;                } else {                    break;                }            }        }        return ans;    }};
原创粉丝点击