程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Longest Palindromic Substring (最長回文串)

Longest Palindromic Substring (最長回文串)

編輯:C++入門知識

題目:   Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring. 題意尋找並輸出字符串中的最長回文串。       沒想到什麼特別好的算法,就上暴力加些剪枝。   枚舉回文串的長度,從最長的開始,尋找是否有當前長度的回文串。   如果找到,直接彈出循環,沒找到就減小回文串的長度。   l記錄滿足條件的回文串在原串中的下標,r記錄回文串的長度。    

class Solution {  
public:  
    string longestPalindrome(string s) {  
        int i,j,k,len=s.length(),l=0,r=1;  
        for(k=len;k>=2;--k)  
        {  
            for(i=0;i+k<=len;++i)          
            {  
                for(j=0;j<k/2;++j)  
                {  
                    if(s[i+j]!=s[i+k-j-1])break;  
                }  
                if(j!=k/2)continue;  
                else  
                {  
                    l=i;r=k;  
                }  
            }  
            if(r==k)break;  
        }  
          
        string temp;  
        return temp.assign(s,l,r);  
    }  
};  

 

   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved