Longest Palindromic Substring leetcode

来源:互联网 发布:新网互联域名转移 编辑:程序博客网 时间:2024/06/03 17:21

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

Example:

Input: “babad”

Output: “bab”

Note: “aba” is also a valid answer.
Example:

Input: “cbbd”

Output: “bb”
思路
题目就就做最长的回文子串,题目没有说清楚的是当一个串的最长回文子串长度为1时,输出串的第一个字符。
代码思路解析: 用start,end来标记每一次循环时一个子串的起始和终止索引,令i= start, j = end,然后逐个字符比较,符合回文条件的子串用一个字符串str保存起来并记录最长的回文串,注意当记录的最长子串大于end-start+1时,直接退出当前一层的循环(不加这个限制,程序会超时)
题目边界条件注意 : 串s长度 < 2时 直接return s;
代码

string find(string s){    if(s.size() < 2) return s; //串长度小于2return s;     int i,j,len,start,end;    int maxLen = 1;    len = s.size();    string str = s.substr(0,1);  //若该串的最长回文串长度为1,返回第一个字符     for(start = 0; start < len - 1; start++){   //记录子串的开始位置         for(end = len-1; end > start ; end--){  //记录子串的结束位置             if(end-start+1 <= maxLen) break;    //当找到的子串maxLen >= 子串的长度时,直接break;                 i = start;                j = end;            while(s[i] == s[j] && i < j){                   i++;                j--;            }            if(i >= j && maxLen < end - start + 1){     //当找到更长的子串时                 maxLen = end - start + 1;               //记录最长子串的长度                 str = s.substr(start,end-start+1);      //记录该回文子串             }        }    }    return str;}
0 0
原创粉丝点击