千问 LeetCode 336. Palindrome Pairs Java Implement

发布时间:2026/10/13 19:36:05
千问    LeetCode 336. Palindrome Pairs Java Implement 推荐用“反转单词 哈希表 枚举分割点”实现 LeetCode 336时间复杂度约为 O(N · L²)。Java 实现class Solution {public ListList palindromePairs(String[] words) {int n words.length;MapString, Integer revIndex new HashMap();// 把每个单词的反转存入哈希表方便 O(1) 查找 for (int i 0; i n; i) { revIndex.put(new StringBuilder(words[i]).reverse().toString(), i); } ListListInteger ans new ArrayList(); for (int i 0; i n; i) { String w words[i]; int m w.length(); for (int j 0; j m; j) { // 情况 1后缀是回文前缀的反转在数组中 // words[i] prefix suffix // suffix 是回文且 reverse(prefix) 存在则 (i, revIndex[prefix]) 合法 if (isPalindrome(w, j, m - 1)) { int leftId findWord(revIndex, w, 0, j - 1); if (leftId ! -1 leftId ! i) { ans.add(Arrays.asList(i, leftId)); } } // 情况 2前缀是回文后缀的反转在数组中 // words[i] prefix suffix // prefix 是回文且 reverse(suffix) 存在则 (revIndex[suffix], i) 合法 if (j ! 0 isPalindrome(w, 0, j - 1)) { int rightId findWord(revIndex, w, j, m - 1); if (rightId ! -1 rightId ! i) { ans.add(Arrays.asList(rightId, i)); } } } } return ans; } private boolean isPalindrome(String s, int l, int r) { while (l r) { if (s.charAt(l) ! s.charAt(r--)) { return false; } } return true; } private int findWord(MapString, Integer revIndex, String s, int l, int r) { if (l r) { // 空串也参与匹配例如 abc 或 abc return revIndex.getOrDefault(, -1); } return revIndex.getOrDefault(s.substring(l, r 1), -1); }}核心思路假设 words[i] words[j] 是回文把 words[i] 切成words[i] prefix suffix有两种可能suffix 是回文那么需要 prefix 的反转存在于数组中即存在某个 words[j] reverse(prefix)。此时 (i, j) 是答案。prefix 是回文那么需要 suffix 的反转存在于数组中即存在某个 words[j] reverse(suffix)。此时 (j, i) 是答案。枚举所有分割点 j就能覆盖所有情况。复杂度时间复杂度O(N · L²)其中 N 是单词数量L 是单词最大长度。空间复杂度O(N · L)用于存储反转单词的哈希表。面试扩展如果面试官追问更优解法可以提到可以用 Trie 回文预处理 进一步优化也可以用 Manacher 预处理回文信息但代码会复杂很多这道题重点通常不在写最复杂解法而在于能否清晰解释“分割点 回文 反转匹配”的推导过程。要不要说说 Trie 回文预处理的优化思路时间复杂度可以压到 O(N · L)但代码量会明显增加。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询