leetcode-5:Longest Palindromic Substring 最長迴文子串
阿新 • • 發佈:2018-12-14
題目:
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Example 1: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. Example 2: Input: "cbbd" Output: "bb" |
給定一個字串 示例 1: 輸入: "babad" 輸出: "bab" 注意: "aba" 也是一個有效答案。 示例 2: 輸入: "cbbd" 輸出: "bb" |
解析:這道題讓我們求最長迴文子串,首先說下什麼是迴文串,就是正讀反讀都一樣的字串,比如 "bob", "level", "noon" 等等。那麼最長迴文子串就是在一個字串中的那個最長的迴文子串。LeetCode中關於迴文串的題共有五道,除了這道,其他的四道為 Palindrome Number, Validate Palindrome, Palindrome Partitioning
class Solution { public: string longestPalindrome(string s) { if(s.size()<2) return s; int start =0, maxlen=0; for(int i=0;i<s.length()-1;++i) { sub(s,i,i,start,maxlen); sub(s,i,i+1,start,maxlen); }return s.substr(start,maxlen); } void sub(string s,int left,int right,int &start,int &maxlen) { while(left>=0&&right<s.size() && s[left]==s[right]) { right++; left--; } if(maxlen < right-left-1) { maxlen = right-left-1; start = left+1; } } };