[Leetcode] #5 Longest Palindromic Substring

来源:互联网 发布:做淘宝真的比上班累吗 编辑:程序博客网 时间:2024/06/05 00:36

Discription:

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"

Solution:

//穷举所有子串 时间O(N^3)bool isPalindrome(string &s, int begin, int end){while (begin < end){if (s[begin] == s[end]){++begin;--end;}else{return false;break;}}return true;}string longestPalindrome(string s) {int maxLength = 0;string result(&s[0], &s[0] + 1);for (int i = 0; i < s.size(); ++i){for (int j = i + 1; j < s.size(); ++j){if (isPalindrome(s, i, j) && j - i + 1>maxLength){maxLength = j - i + 1;string temp(&s[i], &s[j] + 1);result = temp;}}}return result;}
//以一个或两个为中心  由中心向两边扫  O(N^2)string  getSubString(string s, int left, int right){while (left >= 0 && right < s.size() && s[left] == s[right]){left--;right++;}return s.substr(left + 1, right - left - 1);}string longestPalindrome(string s) {if (s.size() < 1) return s;string result = "";for (int i = 0; i < s.size(); i++){int left = i, right = i;string temp = getSubString(s, left, right);if (temp.size()>result.size())result = temp;right = i + 1;temp = getSubString(s, left, right);if (temp.size()>result.size())result = temp;}return result;}

更多请参考http://www.cnblogs.com/strugglion/p/6390357.html

0 0