C 找出最長回文串

2021-09-14 04:23:20 字數 1169 閱讀 4499

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。

示例 1:

輸入: 「babad」

輸出: 「bab」

注意: 「aba」 也是乙個有效答案。

示例 2:

輸入: 「cbbd」

輸出: 「bb」

//第一種方式,暴力破解 [o(n3)]

string longestpalindrome(string s)

if(tmp1 >= tmp2 && maxlen < j -i + 1)}}

return s.substr(start,maxlen);}

//第二種方式,動態規劃 [o(n2)]

//設標誌陣列flag[j][i] 表示在字串中從j到i的位置是否為回文,如果是為true,不是則為false

string longestpalindrome(string s)

else

if((flag[j][i]) && maxlen < i - j + 1)//更新maxlen和start}}

return s.substr(start, maxlen);

}//中心法

string longestpalindrome(string &s)

j--;

k++;

}} for(int i = 0; i < len; i++)//求長度為偶數的回文串

j--;

k++;}}

return s.substr(start, maxlen);

}//馬拉車演算法

string manacher(string s)

vectorp(t.size(), 0);

int mx = 0, id = 0, r = 0, center = 0;

for (int i = 1; i < t.size(); ++i)

if (mx < i + p[i])

if (r < p[i])

}//最長子串的長度是半徑減一,起始位置是中間位置減去半徑再除以2

return s.substr((center - r) / 2, r - 1);

}

最長回文子串 c

將字串 s 反轉得到字串 rev,再求他們的最長公共子串,再判斷該最長公共子串是否就是我們要找的最長回文子串。class solution else break temp return res 注 該方法雖然比暴力法高效,但是在查詢最長公共子串的部分效率還是不夠高,所以在力扣中最後乙個測試用例會超出...

最長回文串

輸入乙個字串,求出其中的最長回文字串,樣例輸入 confucicss say madam,i m asam。樣例輸出 masam,i m asam。這個題首先要判斷最長那個回文串的位置,並且與大小寫無關,用到函式 toupper 然後輸出後面的字串。include include include i...

最長回文串

時間限制 1000ms 單點時限 1000ms 記憶體限制 64mb 描述 小hi和小ho是一對好朋友,出生在資訊化社會的他們對程式設計產生了莫大的興趣,他們約定好互相幫助,在程式設計的學習道路上一同前進。這一天,他們遇到了一連串的字串,於是小hi就向小ho提出了那個經典的問題 小ho,你能不能分別...