题目
给你一个字符串 s
,找到 s
中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
1
2
3
2
3
示例 2:
输入:s = "cbbd"
输出:"bb"
1
2
2
提示:
1 <= s.length <= 1000
s
仅由数字和英文字母组成
题解
java
public String longestPalindrome(String s) {
// 是否是回文字符串
Function<StringBuilder, Boolean> isPalindrome = str -> {
// 长度为1 返回true
if (str.length() == 1) {
return true;
}
for (int i = 0, length = str.length(); i < length / 2; i++) {
if (str.charAt(i) != str.charAt(length - 1 - i)) {
return false;
}
}
return true;
};
// 空字符串
String result = "";
StringBuilder sb = new StringBuilder();
for (int i = 0, length = s.length(); i < length; i++) {
for (int j = i; j < s.length(); j++) {
sb.append(s, j, j + 1);
if (isPalindrome.apply(sb) && sb.length() > result.length()) {
result = sb.toString();
}
}
sb.delete(0, sb.length());
}
return result;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30