LeetCode 6 Longest Palindromic Substring(C,C++,Python,Java)

class Solution {public:string longestPalindrome(string s) {int Max=1,Maxf=0,Maxe=0;for(int i=0;i<s.size();i++){int end = findOdd(s,i);if(Max < (end-i)*2+1){Max = (end-i)*2+1;Maxf=i+i-end;Maxe=end;}end = findEven(s,i);if(Max <(end-i)*2){Max = (end-i)*2;Maxf=i+i+1-end;Maxe=end;}}return s.substr(Maxf,Max);}int findOdd(string s,int center){int i=center-1,j=center+1;while(i>=0 && j<s.size()){if(s[i]!=s[j])return j-1;i–;j++;}return j-1;}int findEven(string s,int center){int i=center,j=center+1;while(i>=0 && j<s.size()){if(s[i]!=s[j])return j-1;i–;j++;}return j-1;}};Python源代码(用时1434ms,,这个真心太长了,要改进算法):

class Solution:# @param {string} s# @return {string}def longestPalindrome(self, s):Max=1;Maxf=0;Maxe=0for i in range(0,len(s)):end = self.findOdd(s,i)if Max < (end-i)*2+1:Max = (end-i)*2+1Maxf = i+i-endMaxe = endend = self.findEven(s,i)if Max < (end-i)*2:Max = (end-i)*2Maxf = i+i+1-endMaxe = endreturn s[Maxf:Maxe+1]def findOdd(self,s,center):i=center-1;j=center+1while i>=0 and j<len(s):if s[i]!=s[j]:return j-1i=i-1;j=j+1return j-1def findEven(self,s,center):i=center;j=center+1while i>=0 and j<len(s):if s[i]!=s[j]:return j-1i=i-1;j=j+1return j-1

到底通向了什么样的远方呢?

LeetCode 6 Longest Palindromic Substring(C,C++,Python,Java)

相关文章:

你感兴趣的文章:

标签云: