【算法】【字符串】最长回文子串
1 题目
给你一个字符串 s
,找到 s
中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s
仅由数字和英文字母组成
2 解答
唉,超时了,待我后续想想:
class Solution { public String longestPalindrome(String s) { // 1 <= s.length <= 1000 无需校验参数 null // 先采用暴力 int len = s.length(); String res = ""; for (int i = 0; i < len; i++) { int left = 0, right = len - 1; String subRes = ""; // 左边 for (int j = 0; j <= i; j++) { String leftSub = s.substring(j, i + 1); if (leftSub.equals(new StringBuilder(leftSub).reverse().toString()) && leftSub.length() > res.length()) { res = leftSub; break; } } // 右边 for (int j = len - 1; j >= i; j--) { String rightSub = s.substring(i, j + 1); if (rightSub.equals(new StringBuilder(rightSub).reverse().toString()) && rightSub.length() > res.length()) { res = rightSub; break; } } // 取两边最短的 int subLen = Math.min(i - left, right - i); int j = 1; while (subLen > 0 && j <= subLen) { left = i - j; right = i + j; if (s.charAt(left) == s.charAt(right)) { subRes = s.substring(left, right + 1); j++; continue; } break; } if (subRes.length() > res.length()) { res = subRes; } if (subRes.length() == s.length()) { return subRes; } } return res; } }
加油。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了