5. Longest Palindromic Substring

来源:互联网 发布:淘宝卖家版2017官网 编辑:程序博客网 时间:2024/05/14 07:45

问题描述:Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

分析:需要以每一个字母开始去遍历寻找与随后的字母是否构成回文:

1、构成回文,则判断长度是否比之前的会问长度更长:1)若比之前的回文长度更长,将该回文做为最长回文。

·              2)若比之前的回文短或者等长,最长回文位置不做改变;

2、不构成回文,继续下一个字母与其后面的字母的比较。

源代码:

string longestPalindrome(string s){
int length = s.length();//字符串长度
int  maxright = 0,maxLeft = 0;//用来记录最长回文的长度,初始化为0
if (length < 2)//长度为1或为空时返回字符串本身
return s;
else{
int left = 0;
int right = length - 1;
while (left < length -1){//从左到右依次遍历
while (left < right){//依次判断该字母与后面的字母是否构成回文
int j = left;
int k = right;
while (j < k && s.at(j)==s.at(k)){//判断后面的字母是否构成回文
j++;
k--;
}
if (j + 1 == k || j == k){//判断是否为回文
if ((right - left) > (maxright - maxLeft)){//判断是否为最长回文
maxright = right;
maxLeft = left;
}
}
right--;
}
left++;
}
return s.substr(maxLeft, maxright - maxLeft);//返回最长回文
}
}

0 0
原创粉丝点击