lintcode 最長回文子串

2021-08-03 18:22:48 字數 839 閱讀 1195

問題描述:

給出乙個字串(假設長度最長為1000),求出它的最長回文子串,你可以假定只有乙個滿足條件的最長回文串。

樣例給出字串"abcdzdcab",它的最長回文子串為"cdzdc"

這道題讓我們求最長回文子串,首先說下什麼是回文串,就是正讀反讀都一樣的字串,比如 "bob", "level", "noon" 等等。那麼最長回文子串就是在乙個字串中的那個最長的回文子串。我們知道傳統的驗證回文串的方法就是兩個兩個的對稱驗證是否相等,那麼對於找回文子串的問題,就要以每乙個字元為中心,像兩邊擴散來尋找回文串,這個演算法的時間複雜度是o(n*n),可以通過oj,就是要注意奇偶情況,由於回文串的長度可奇可偶,比如"bob"是奇數形式的回文,"noon"就是偶數形式的回文,兩種形式的回文都要搜尋,參見**如下:

class solution

left = right = i;

searchpalindrome(s, left, right, startidx, len);

}if (len == 0) len = s.size();//?????????????????????待解決

return s.substr(startidx, len);

}void searchpalindrome(string s,int left, int right, int &startidx, int &len)

int wide = right - left + 2 * step - 1;

if (len < wide) }};



LintCode 最長回文子串

給出乙個字串 假設長度最長為1000 求出它的最長回文子串,你可以假定只有乙個滿足條件的最長回文串。您在真實的面試中是否遇到過這個題?yes 樣例給出字串 abcdzdcab 它的最長回文子串為 cdzdc 挑戰o n2 時間複雜度的演算法是可以接受的,如果你能用 o n 的演算法那自然更好。標籤e...

LintCode之最長回文子串

給出乙個字串 假設長度最長為1000 求出它的最長回文子串,你可以假定只有乙個滿足條件的最長回文串。樣例 給出字串 abcdzdcab 它的最長回文子串為 cdzdc public class solution if s.length 1 stringbuffer sb new stringbuff...

lintcode練習 200 最長回文子串

給出乙個字串 假設長度最長為1000 求出它的最長回文子串,你可以假定只有乙個滿足條件的最長回文串。給出字串 abcdzdcab 它的最長回文子串為 cdzdc o n2 時間複雜度的演算法是可以接受的,如果你能用 o n 的演算法那自然更好。class solution param s input...