ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

LeetCode 5:最长回文子串

LeetCode 5:最长回文子串

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);}}
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进