### 解题思路
再看了好几遍视频和代码才看懂的,不过自己写的代码没官方的代码看起来简单明了,建议看下官方的解题思路!
这两行代码看似含简单,但是难理解,要到草稿纸上不断的演示,来算i到目标下标之间的关系!
l = i - (len-1)/2;
r = i + len/2 + 1;
这里有时候会让上面的越界,就当“0123210”,下面这个函数最后返回的值是9,当时再想最后这个下标是0和7,所所以在返回时+1,最后发现这个时错误的,当while循环结束后l=-1,r=7,所以在最后想起来在返回时-1,因为这个原因我在此换了while里面的好几个条件,发现啥都没用。
while (l>= 0&& r < s.length() && s.charAt(l) == s.charAt(r) ){
l--;
r++;
}
return r-l+1;
最后修改的。
while (l>= 0&& r < s.length() && s.charAt(l) == s.charAt(r) ){
l--;
r++;
}
return r-l-1;
### 代码
```java
class Solution {
public String longestPalindrome(String s) {
if (s.length() < 1 || s == null){
return "";
}
int l = 0,r = 0;
for (int i = 0; i < s.length();i++){
int len1 = ss(s, i, i);
int len2 = ss(s, i, i + 1);
int len = Math.max(len1,len2);
if (len > r - l){
l = i - (len-1)/2;
r = i + len/2 + 1;
}
}
return s.substring(l,r);
}
public int ss(String s,int l,int r){
while (l>= 0&& r < s.length() && s.charAt(l) == s.charAt(r) ){
l--;
r++;
}
return r-l-1;
}
}
```