您现在的位置是:亿华云 > 人工智能
LeetCode - 求最长的镜像字符串
亿华云2025-10-03 06:38:49【人工智能】4人已围观
简介前言我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。微博:@故胤道长[1])的 Swift 算法题题解整理为文字版以方便大家学习与阅读。LeetCode
前言
我们社区陆续会将顾毅(Netflix 增长黑客,求最《iOS 面试之道》作者,长的串ACE 职业健身教练。镜像微博:@故胤道长[1])的字符 Swift 算法题题解整理为文字版以方便大家学习与阅读。
LeetCode 算法到目前我们已经更新了 3 期,求最我们会保持更新时间和进度(周一、长的串周三、镜像周五早上 9:00 发布),云南idc服务商字符每期的求最内容不多,我们希望大家可以在上班路上阅读,长的串长久积累会有很大提升。镜像
不积跬步,字符无以至千里;不积小流,求最无以成江海,长的串Swift社区 伴你前行。亿华云镜像
难度水平:中等
1. 描述
给定一个字符串 s, 返回 s 中的最长回文子字符串.
2. 示例
示例 1
输入:s = "babad" 输出: "bab" 解释: "aba" 同样是有效答案。示例 2
输入:s = "cbbd" 输出: "bb"示例 3
输入:s = "a" 输出: "a"示例 4
输入:s = "ac" 输出: "a"约束条件:
1 <= s.length <= 1000 s 仅由数字和英文字母组成。3. 答案
class LongestPalindromicSubstring { func longestPalindrome(_ s: String) -> String { guard s.count > 1 else { return s } let sChars = Array(s) var maxLen = 0, start = 0 for i in 0..<sChars.count { searchPalindrome(sChars, i, i, &start, &maxLen) searchPalindrome(sChars, i, i + 1, &start, &maxLen) } return String(sChars[start..<start + maxLen]) } private func searchPalindrome(_ chars: [Character], _ l: Int, _ r: Int, _ start: inout Int, _ maxLen: inout Int) { var l = l, r = r while l >= 0 && r < chars.count && chars[l] == chars[r] { l -= 1 r += 1 } if maxLen < r - l - 1 { start = l + 1 maxLen = r - l - 1 } } } 主要思想:从中心的每个索引中找到最长的镜像字符串。 时间复杂度:O(n^2) 空间复杂度:O(1)该算法题解的 github 仓库是:LeetCode-Swift[2]
点击前往 LeetCode[3] 练习
参考资料
[1]@故胤道长: https://m.weibo.cn/u/1827884772
[2]LeetCode-Swift: https://github.com/soapyigu/LeetCode-Swift
[3]LeetCode: https://leetcode.com/problems/longest-palindromic-substring/
服务器租用很赞哦!(8)