6/13/2014

118. Longest Palindromic Substring

public class Solution {
    public String longestPalindrome(String s) {
        if (s.length()==0) return "";

int maxdiff = 0;
int maxindex = 0;
boolean odd = true;
int length = s.length();

for (int i=0; i<length; i++) {
int diff = 0;

if (i+1<length && s.charAt(i)==s.charAt(i+1)) {
diff = 0;
while (i-diff>=0 && i+1+diff<length && s.charAt(i-diff)==s.charAt(i+1+diff)) {
diff++;
}
if (diff-1>=maxdiff) {
maxdiff = diff-1;
maxindex = i;
odd = false;
}
}

diff = 0;
while (i-diff>=0 && i+diff<length && s.charAt(i-diff)==s.charAt(i+diff)) {
diff++;
}
if (diff-1>maxdiff) {
maxdiff = diff-1;
maxindex = i;
odd = true;
}
}

if (odd) return s.substring(maxindex-maxdiff, maxindex+maxdiff+1);
else return s.substring(maxindex-maxdiff, maxindex+maxdiff+2);
    }
}

没有评论:

发表评论