【Leetcode】【Longest Palindromic Substring】【最長回文子串】【C++】


  • 題目:給定字符串,求其最長的回文子串
  • 說明:給定字符串長度為1000以內。
  • 思路:for循環遍歷字符串,求以i為中心的回文子串長度。與最長回文子串長度max_len比較,若大於max_len,則更新max_len。
  • 說明:注意分開處理子串長度為奇偶的兩種情況
  • 時間復雜度:O(N2)。
  • 代碼:
    class Solution {
    public:
        string longestPalindrome(string s) {
            int len_s=s.size();
            int max_len=0;
            int cen_pos=0;
            bool flag=false;
            for(int i=0;i<len_s;i++)
            {
                int cur_len=0;
                while((i-cur_len)>=0 && (i+cur_len)<len_s && s[i-cur_len]==s[i+cur_len])
                    cur_len++;
                if(cur_len>max_len)
                {
                    max_len=(cur_len-1);
                    cen_pos=i;
                    flag=false;
                }
                
                cur_len=0;
                while((i-cur_len-1)>=0 && (i+cur_len)<len_s && s[i-cur_len-1]==s[i+cur_len])
                    cur_len++;
                if(cur_len>max_len)
                {
                    max_len=cur_len;
                    cen_pos=i;
                    flag=true;
                }
                
            }
            if(flag)
                return s.substr(cen_pos-max_len,2*max_len);
            return s.substr(cen_pos-max_len,2*max_len+1);
            
        }
    };

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM