LeetCode 5
题目:
思路:
仅此回文子串题,指针从中心走向两端!
如何确定指针 ?for循环遍历每个索引 !
使用for遍历每一个索引 !偶数则指针为i 和 i ,奇数则指针为i 和 i+1,最后更新最长的结果r
注意:substring()是左闭右开!
Java实现:
classSolution{publicStringlongestPalindrome(Strings){Stringr="";// 长度为0,便于比较!// 左右指针,从中间向两边移动!for(inti=0;i<s.length();i++){Strings1=find(s,i,i);// 找到以i位置为中心的回文串Strings2=find(s,i,i+1);// 找到以i和i+1位置为中心的回文串 // find有while防止空指针异常r=r.length()>s1.length()?r:s1;r=r.length()>s2.length()?r:s2;// 更新r结果}returnr;}// 判断是否为回文格式Stringfind(Strings,intl,intr){// 防止空指针异常while(l>=0&&r<s.length()&&s.charAt(l)==s.charAt(r)){l--;r++;// 指针向两边展开}// 不满足while条件后会跳出,l和r回多运行一次 l-- r++ ,所以要l+1,但不用r-1,因为substring是左闭右开returns.substring(l+1,r);}}