摘要:難度題目是說給出一個字符串求出這個字符串的最長回文的子串回文是指前后完全對稱的字符串像是之類的都算是回文奇數字母的回文和偶數字母的回文中心是不一樣的奇數字母比如的中心在中間字母上偶數字母比如的回文在中間兩字母的中心上由此可見回文中心點實際上
Given a string s, find the longest palindromic substring in s. You may assume
that the maximum length of s is 1000.
Example:
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.
Example:
Input: "cbbd"
Output: "bb"
難度:Medium
題目是說, 給出一個字符串, 求出這個字符串的最長"回文"的子串. 回文是指前后完全對稱的字符串, 像是abba cabac 之類的都算是回文.
奇數字母的回文和偶數字母的回文中心是不一樣的, 奇數字母比如aba的中心在中間字母上, 偶數字母比如abba的回文在中間兩字母的中心上, 由此可見, 回文中心點實際上最小間隔是"半個"字符. 我們可以考慮回文中心以半個字符間距不斷移動, 去尋找最長回文子串.
public class Solution { public String longestPalindrome(String s) { int len = s.length(); int maxl = 0; int maxr = 0; int maxLen = 1; for (int k = 0; k < len * 2 - 1; k++) { int base = 0; int plen = 1; int left = k / 2; int right = k / 2; if (k % 2 == 1) { base = 1; plen = 0; left = (k - 1) / 2; right = (k + 1) / 2; } for (int i = base; k - i >= 0 && (k + i) / 2 <= len - 1; i = i + 2) { int l = (k - i) / 2; int r = (k + i) / 2; if (s.charAt(l) != s.charAt(r)) { break; } left = l; right = r; plen = r - l + 1; } if (plen > maxLen) { maxl = left; maxr = right; maxLen = plen; } } return s.substring(maxl, maxr + 1); } public static void main(String[] args) { Solution s = new Solution(); System.out.println(s.longestPalindrome("a")); System.out.println(s.longestPalindrome("aba")); System.out.println(s.longestPalindrome("aa")); System.out.println(s.longestPalindrome("abac")); System.out.println(s.longestPalindrome("baab")); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66484.html
摘要:一題目最長回文子串給定一個字符串,找到中最長的回文子串。你可以假設的最大長度為。示例輸入輸出注意也是一個有效答案。 一、題目 最長回文子串: 給定一個字符串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。 示例 1: 輸入: babad輸出: bab注意: aba 也是一個有效答案。 示例 2: 輸入: cbbd輸出: bb 二、我的答案 思路 1.排...
摘要:題目即求最長回文子序列原題鏈接此篇博客僅為學習記錄我的解法及代碼暴力解決,用及進行兩層遍歷循環中套一層循環,用遍歷,求最長回文序列字符串,同時用變量記錄最長子序列這種寫法很暴力,效率很低,一層循環,一層循環,回文序列對比一層,時間復雜度為辣 題目: Given a string s, find the longest palindromic substring in s. You ma...
摘要:題目解析題目是要找出最長的回文字符串,拿到題目的第一反應是遍歷子串,然后一直替換最長的子字符串即可了。但是這種解法遇到極端輸入狀況就會超時,指定的最長長度為,遍歷子串需要兩次循環,判斷回文需要一次循環,所以總的效率為,那么極端狀況會超時。 題目 Given a string s, find the longest palindromic substring in s. You may ...
摘要:題目描述給定一個字符串,找到中最長的回文子串。你可以假設的最大長度為。示例輸入輸出注意也是一個有效答案。示例輸入輸出思路分析暴力解法解決一個問題如果沒有思路,就要想辦法從簡單粗暴的解法開始,然后想辦法優化它。 題目描述 https://leetcode-cn.com/probl... 給定一個字符串 s,找到 s 中最長的回文子串。你可以假設?s 的最大長度為 1000。 示例 1: ...
摘要:這種解法中,外層循環遍歷的是子字符串的中心點,內層循環則是從中心擴散,一旦不是回文就不再計算其他以此為中心的較大的字符串。 Longest Palindromic Substring Given a string S, find the longest palindromic substring in S. You may assume that the maximum length ...
閱讀 3486·2021-11-18 10:07
閱讀 1586·2021-11-04 16:08
閱讀 1502·2021-11-02 14:43
閱讀 1083·2021-10-09 09:59
閱讀 837·2021-09-08 10:43
閱讀 1073·2021-09-07 09:59
閱讀 954·2019-12-27 11:56
閱讀 994·2019-08-30 15:56