找出给出的字符串S中最长的回文子串。假设S的最大长度为1000,并且只存在唯一解。
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.

/*思路:
从前遍历每个字符,然后把这个字符再从后往前遍历,
如果两个索引一样,则说明不可能回文串中不包含这个字符,则继续从前往后遍历下一个字符
如果两个索引不一样,则可能是回文串得两端,左索引++,右索引--,比较当前字符是否相等,如果不等则放弃,如果相等则知道左右索引相等或相差1结束,计算总的长度,保留最长得一段回文串的左右索引。
*/
import java.util.*;
public class Solution {
    /**
     * 
     * @param s string字符串 
     * @return string字符串
     */
    public String longestPalindrome (String s) {
        // write code here
        if(s.length() < 1 || s == ""){
            return null;
        }else if(s.length() == 1){
            return s;
        }else{
            int outl = 0;
            int outr = 0;
            for(int i = 0;i < s.length();i++){
                char c = s.charAt(i);
                int index = s.lastIndexOf(c);
                if(index == i){
                    continue;
                }else{
                    int l = i;
                    int r = index;
                    while(l <= r && s.charAt(l) == s.charAt(r)){
                        l++;
                        r--;
                    }
                    if(r-l <=1 && (outr-outl) < (index-i)){
                        outl = i;
                        outr = index;
                    }
                }
            }
            return s.substring(outl,outr+1);
        }
    }
}