LeetCode之最长回文子串超详细java讲解
描述:给你一个字符串 s
,找到 s
中最长的回文子串。
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
输入:s = "cbbd" 输出:"bb"
思路一:暴力枚举,将每一种情况都列出来,然后判断是否为回文串,最后选出最长的
回文子串。
时间复杂度:O(n^3)
空间复杂度:O(1)
完整代码如下:
public String longestPalindrome(String s){ int len = s.length(); if(len<2){ return s; } int maxLen = 1; int begin = 0; char[] charArray = s.toCharArray(); for(int i = 0;i<len-1;i++){ for(int j = i+1;j<len;j++){ if(j-i+1>maxLen && validP(charArray,i,j )){ maxLen = j - i +1; begin = i; } } } return s.substring(begin,begin+maxLen); } public boolean validP(char[] chars,int i,int j){ while (i<j){ if(chars[i] != chars[j]){ return false; } i++; j--; } return true; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步