【Leetcode】5. Longest Palindromic Substring

来源:互联网 发布:淘宝店铺怎么修改模板 编辑:程序博客网 时间:2024/06/05 02:16

Description:

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”

Explanation: “aba” is also a valid answer.

Input: "cbbd"

Output: “bb”

思路:

本题的目标是找到最长回文子串。那么一个基本的想法是可以进行两次循环遍历,第一个循坏是外层循坏,在字符串从左往右开始遍历,第二个循环是内层循环,在字符串中从上一层循环的当前值的右方进行,然后比较上一个值和下一个值的是否相等,然后记录相等字符的起始位置和长度,最后返回结果即可。

以下是使用C++的实现过程:

class Solution {public:    string longestPalindrome(string s) {        if (s.empty() || s.size()==1) return s;        int begin = 0, strlen = 1;        for (int i=0; i<s.size();) {          if (s.size()-i <= max_len / 2) break;            int left = i, right = i;            while (right < s.size()-1 && s[right+1] == s[right]) {                right++;            }             i = right + 1;            while (right < s.size()-1 && left > 0 && s[right+1] == s[left-1]) {                 right++;                left--;            }            int temp = right - left + 1;            if (temp > strlen) {                begin = left;                strlen = temp;            }        }        return s.substr(begin, strlen);    }};
原创粉丝点击