public String longestPalindrome(String s) {
        int start = 0, max = 1;
        for (int i = 1; i < 2 * s.length(); ++i) {
            int tmpmax = 1, j = 1;
            while (i - j >= 0 && i + j < 2 * s.length() + 1) {
                if ((i - j) % 2 == 0) {
                    ++j;
                    tmpmax += 2;
                }
                else {
                    if (s.charAt((i - j) / 2) != s.charAt((i + j) / 2)) {
                        if (tmpmax > max) {
                            max = tmpmax;
                            start = i - j + 1;
                        }
                        break;
                    }
                    ++j;
                    tmpmax += 2;
                }
            }
            if (i - j < 0 || i + j >= 2 * s.length() + 1) {
                if (tmpmax > max) {
                    max = tmpmax;
                    start = i - j + 1;
                }
            }
        }
        start = (start + 1) / 2;
        max /= 2;
        return s.substring(start, start + max);
    }