每周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;
}
};
本文针对LeetCode上的647题“回文子串”进行详细解析,给出了一种非动态规划的方法来计算字符串中所有回文子串的数量,并提供了C++实现代码。
752

被折叠的 条评论
为什么被折叠?



