描述:
對于一個字串,請設計一個高效演算法,計算其中最長回文子串的長度,
給定字串A以及它的長度n,請回傳最長回文子串的長度,
示例1
輸入:
“abc1234321ab”,12
回傳值:
7
(題目來自牛客網)
用C++實作如下
class Solution {
public:
int getLongestPalindrome(string A, int n) {
//思路,輸入為字串A以及它的長度n,求最長回文字串
int left = 0;
int right = 0;
int maxlength = 0;
for(int i=0; i<n; ++i)
{
left=i;
right=i;
while(right<n && left>=0 && A[right]==A[left]) //遍歷以i為中心擴散的回文子串的長度
{
left--;
right++;
}
maxlength = max(maxlength, right-left-1); //取最大值行為
left = i;
right = i+1;
while(right<n && left>=0 && A[right]==A[left]) //以(i和i+1)為中心的回文子串的長度
{
left--;
right++;
}
maxlength = max(maxlength, right-left-1); //取最大值行為
}
return maxlength;
}
};
純手撕代碼,如果覺得內容不錯麻煩點個贊,后面陸續配上Top100演算法題通俗易懂的講解視頻,可以花兩個月時間完全掌握,進大廠不是夢,轉行狗親測!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287472.html
標籤:其他
上一篇:貪心演算法總結
