LeetCode:第五题
Longest Palindromic Substring
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example 1:
Input: “babad”
Output: “bab”
Note: “aba” is also a valid answer.
Example 2:
Input: “cbbd”
Output: “bb”
题目看下来,读者应该很熟悉,程序员面试宝典中必有的求最大回文字符串。
字符串最大回文子字符串:
1.长度可为奇数和偶数,奇数情况,中间字符无须对应相同字符,偶数情况必须完全对称;
解题代码如下:
class Solution {
public:
string longestPalindrome(string s) {
if(s.size() < 2)
{
return s;//单字符构成字符串直接返回
}
int n = s.size(),start = 0,maxlen = 0;
for(int i = 0;i= 0 && right < s.size() && s[left] == s[right])//以left,right为基准,分别向左、向右遍历
{
--left;++right;
}
if(maxlen < right - left - 1)
{
start = left + 1;//记录回文字符串开始位置
maxlen = right - left - 1;记录回文字符串的长度
}
}
};
总结:
方法核心思想:
以字符串某个字符为基准,向左向右遍历字符串,比较相应下标字符是否相等,以此判断是否回文;
该方法须注意所求回文字符串为奇数或偶数的情况,须同时做出遍历,否则test case无法全部通过;
提示:可自行写demo来调试,查看数据流转,更能体会算法的独特之处。
一周又结束啦,祝大家晚安,新一周继续加油。