马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 糖逗 于 2020-5-8 14:32 编辑
题目描述:给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。
具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。
示例 1:
输入: "abc"
输出: 3
解释: 三个回文子串: "a", "b", "c".
示例 2:
输入: "aaa"
输出: 6
说明: 6个回文子串: "a", "a", "a", "aa", "aa", "aaa".
注意:
输入的字符串长度不会超过1000。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindromic-substrings
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
int countSubstrings(string s) {
int len = s.size();
vector<vector<bool> > dp(len, vector<bool>(len, false));
int res = 0;
for(int l = 0; l < len; l++){
for(int i = 0; i < len - l; i++){
int j = i+l;
if(s[i] == s[j] &&(l < 2||dp[i+1][j-1])){
dp[i][j] = true;
res ++;
}
}
}
return res;
}
};
注意事项:
1.中心循环的模板for(int l = 0; l < len; l++){
for(int i = 0; i < len - l; i++){
int j = i+l;
其中 int l = 0后面的0这个具体的数字可以视情况而定,有时是1有时是0. |