diff --git a/Week_08/G20190343020268/0268_Week 08(java)2 b/Week_08/G20190343020268/0268_Week 08(java)2 new file mode 100644 index 00000000..eef9a11c --- /dev/null +++ b/Week_08/G20190343020268/0268_Week 08(java)2 @@ -0,0 +1,30 @@ +//5. 最长回文子串 +class Solution { + public int sub(String s, int left, int right){ + while(left >= 0 && right < s.length() && s.charAt(left) == s.charAt(right)){ + left--; + right++; + } + int length = right - left - 1; + return length; + } + + public String longestPalindrome(String s) { + int len = s.length(); + if(len <= 1) return s; + int max = 0; + String ret = null; + for(int i = 0; i < len; i++){ + int m = sub(s, i, i); + int n = sub(s, i, i + 1); + int length = Math.max(m, n); + if(length > max){ + int L = i - (length - 1) / 2; + int R = i + length / 2; + max = length; + ret = s.substring(L, R + 1); + } + } + return ret; + } +}