我的解法v1:
思路:查找字符串中aa或者aba類似的字符字串,然後開始往兩邊拓展
代碼:
class Solution:
# @param {string} s
# @return {string}
def longestPalindrome(self, s):
ret = ''
if len(s) == 1:
return s
for index in range(len(s) -1):
if s[index] == s[index +1]:
tmp = self.verifyPalindrome(s, index, index +1)
if len(tmp) >= len(ret):
ret = tmp
for index in range(1, len(s)-1):
if s[index -1] == s[index +1]:
tmp = self.verifyPalindrome(s, index -1, index +1)
if len(tmp) >= len(ret):
ret = tmp
return ret
def verifyPalindrome(self, s, i, j):
for var in range(1, len(s)):
if (i - var) <0 or (j + var) >= len(s) or s[i-var] != s[j+var]:
return s[i-var+1: j+var]
def main():
test = Solution()
strForTest = 'aaaa'
print test.longestPalindrome(strForTest)
if __name__ == '__main__':
main()
- result: AC 但是感覺快要超時的樣子
時間複雜度是O(n2) ,看到網上有動態規劃O(n) 的做法!!!