LeetCode每日一題:longest palindromic substring
問題描述
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
問題分析
我們可以採用遞迴的方式,找每個字元為中心的最長迴文子串,用一個全域性變數(寫程式碼應該儘量避免全域性的變數)來記錄最長迴文子串的起始點和長度,遞迴時要分子串字元數是奇數還是偶數分類討論。
程式碼實現
public String longestPalindrome(String s) {
if (s.length() < 2) return s;
for (int i = 0; i < s.length() - 1; i++) {
findLongestPalindrome(s, i, i);
findLongestPalindrome(s, i, i + 1);
}
return s.substring(startInLongestPalindrome, startInLongestPalindrome + maxLenInLongestPalindrome);
}
private void findLongestPalindrome(String s, int i, int j) {
while (i >= 0 && j < s.length() && s.charAt(i) == s.charAt(j)) {
i--;
j++;
}
if (maxLenInLongestPalindrome < j - i - 1) {
startInLongestPalindrome = i + 1;
maxLenInLongestPalindrome = j - i - 1;
}
}
private int startInLongestPalindrome = 0, maxLenInLongestPalindrome = 0;
相關文章
- LeetCode 5 (Longest Palindromic Substring)LeetCode
- Leetcode5: Longest Palindromic Substring(最長迴文子串)LeetCode
- [LeetCode] 5. Longest Palindromic SLeetCode
- [LeetCode] 3. Longest Substring Without Repeating Characters 題解LeetCode
- Leetcode 3 Longest Substring Without Repeating CharactersLeetCode
- Leetcode 3. Longest Substring Without Repeating CharactersLeetCode
- [LeetCode] 2414. Length of the Longest Alphabetical Continuous SubstringLeetCodeAlphabet
- Leetcode javascript 3 longest-substring-without-repeating-charactersLeetCodeJavaScript
- LeetCode Longest Substring Without Repeating Characters(003)解法總結LeetCode
- D. Non-Palindromic Substring
- 【Leetcode】3. Longest Substring Without RepeatingCharacters無重最長子串LeetCodeGC
- leetcode每日一題LeetCode每日一題
- #3 Longest Substring Without Repeating Characters[M]
- Leetcode每日一題(1)LeetCode每日一題
- LeetCode3:Longest Substring Without Repeating Characters(無重複字元的最長子串)LeetCode字元
- LeetCode 2024/6 每日一題 合集LeetCode每日一題
- SPOJ 1811 Longest Common Substring(字尾自動機)
- LeetCode 每日一題「判定字元是否唯一」LeetCode每日一題字元
- LeetCode每日一題: 找不同(No.389)LeetCode每日一題
- LeetCode每日一題: 移除元素(No.27)LeetCode每日一題
- Leetcode 32 Longest Valid ParenthesesLeetCode
- Leetcode 14 Longest Common PrefixLeetCode
- LeetCode每日一題: 移動零(No.283)LeetCode每日一題
- LeetCode每日一題:迴文數(No.9)LeetCode每日一題
- LeetCode每日一題:兩數之和(No.1)LeetCode每日一題
- LeetCode每日一題:自除數(No.728)LeetCode每日一題
- LeetCode每日一題:Nim遊戲(No.292)LeetCode每日一題遊戲
- 75. Sort Colors(Leetcode每日一題-2020.10.07)LeetCode每日一題
- LeetCode每日一題: 排列硬幣(No.441)LeetCode每日一題
- LeetCode每日一題: 各位相加(No.258)LeetCode每日一題
- LeetCode每日一題:求眾數(No.169)LeetCode每日一題
- LeetCode每日一題:爬樓梯(No.70)LeetCode每日一題
- 【LeetCode】每日一題164. 最大間距LeetCode每日一題
- Leetcode每日一題:面試題16.19.水域大小LeetCode每日一題面試題
- leetcode每日一題刷題記錄(10.26-10.30)LeetCode每日一題
- [LeetCode] 32. Longest Valid ParenthesesLeetCode
- LeetCode每日一題:整數反轉(No.7)LeetCode每日一題
- LeetCode每日一題: 路徑總和(No.112)LeetCode每日一題
- LeetCode每日一題:最長公共字首(No.14)LeetCode每日一題