问题描述
给定一个字符串,求它的最长回文子串的长度(连续长度或者不连续长度)。
回文串就是正着读和反着读都一样的字符串。
问题一:判断是否是回文
分析:根据定义进行判断,首尾不一致,则就不是回文
bool isPalinDrome(string& str, int begin, int end){
// 判断是否是回文
int bg = begin, ed = end;
while (bg <= ed){
if (str[bg] == str[ed]){
bg++;
ed--;
}
else{
return false;
}
}
return true;
}
问题二:连续条件下最长回文长度
分析:给定一个字符串,求它的最长连续的回文子串的长度,这里介绍两种方法;
最长回文串(可不连续)的意思是以某个字符为轴,分别往左右遍历的公共子串的最大长度(可不连续),那么不如将最大回文串改为一个字符串的顺序与逆序的最大公共子串(可不连续)。
方法1:暴力法(BruteForce,BF)
先求出该字符串的