leetcode-5. Longest Palindromic Substring

来源:互联网 发布:手机验钞机软件新版 编辑:程序博客网 时间:2024/06/05 07:40

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"
给定一个字符串s,判断最长回文子串。

参考了点击打开链接博主的做法,博主介绍了好几种做法,我只实现了比较容易的一个。

从头到尾遍历字符串s,以每个字符或两个字符为中心(回文有奇数和偶数)向两侧每次扩展一个位置,判断左右两侧的字符是否相同,由此记录中心形成的最长回文。

对每个中心形成的最长回文记录最长的。

class Solution {public:    string centerJudge(string s, int left, int right){        string str = "";        //以一个字母或两个相同字母做中心,向两侧每次延伸一个字母,判断是否想同        while(s[left] == s[right] && left >= 0 && right < s.size()){            left --;            right ++;        }        str = s.substr(left + 1, right - left - 1);//substr(off, count)函数,off为起始位置,count为字符串长度        //cout<<left<<" "<<right << " " <<str<<endl;        return str;    }     string longestPalindrome(string s) {        int n = s.size();        string longest = "";        string ans = "";        int maxlength = 0;        for(int i = 0; i < n; i ++){            longest = centerJudge(s, i, i);//一个字母为中心            if(longest.size() > maxlength){                maxlength = longest.size();                ans = longest;            }            longest = centerJudge(s, i, i + 1);//两个相同字母为中心            if(longest.size() > maxlength){                maxlength = longest.size();                ans = longest;            }        }        return ans;    }};

注:substr(off, count)函数,off为起始位置,count为字符串长度



0 0
原创粉丝点击