最长回文串
给你一个字符串 s
,找到 s
中最长的回文子串。
示例 1:
输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。示例 2:
输入:s = “cbbd”
输出:“bb”来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
解法一:暴力枚举
把字符串中所有是回文串的子串都挨个遍历一遍,记录下最长回文串的长度和起始下标。
class Solution {
private:
//判断是否是回文串
bool validPalindrome(string& s, int left, int right) {
for (int i = left, j = right; i < j; i++, j--) {
if (s[i] != s[j]) {
return false;
}
}
return true;
}
public:
string longestPalindrome(string s) {
int max_len = 0;
int start = 0;
for (int i = 0; i < s.length(); i++) {
for (int j = i; j < s.length(); j++) {
//如果当前子串的长度大于到目前为止出现过的回文串的最大长度,且当前子串是回文串
//则更新回文串的起始下标和长度
if (j - i + 1