新博文地址:[leetcode]Longest Palindromic Substring
http://oj.leetcode.com/problems/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.
返回字符串中最长的回文子串。
本题略难啊.....
拿到本题的第一反应是:
* 1. find common subString of String s and its reverse s'
* 2. check if the common subString is palindromic ,if so , get the longest one
* 2. check if the common subString is palindromic ,if so , get the longest one
即:首先把本题转换成比较熟悉的查找公共子串问题。
因为是回文串,其必要条件就是字符串s和它的逆序的公共子串。
再检查公共子串是不是回文串。比如abdeba,其逆序是abedba。公共子串是ab和ba,但是显然两个都不是回文子串。
好歹把代码写完了(很长,哎。。)写了几个测试实例也过了,但是提交时最长的case提示超时,囧。反正就是代码有问题啦。
拜读了一下leetcode中大神的代码,亮瞎狗眼啊.....<!--StartFragment-->
自己动手,老老实实将人家的代码码一遍吧╮(╯_╰)╭
public String longestPalindromeDP(String s) { int length = s.length(); if(length == 1){//长度为1时,直接返回 return s; } int substringBeginIndex = 0;//记录最长回文子串的起始下标 int maxLength = 0;//记录最长回文子串的长 boolean[][] table = new boolean[length][length];//自己脑补一下这个table,功能一会儿就知道了 for (int i = 0; i < length; i++) { table[i][i] = true;//单个字符肯定是回文的 if (i < length - 1 && s.charAt(i) == s.charAt(i + 1)) { table[i][i + 1] = true;//2个相等字符也是回文的 substringBeginIndex = i; maxLength = 2; } } //刚才已经讨论了最长子串为1 和 2 的情况,接下来讨论3 ~ length的情况 for (int len = 3; len <= length; len++) { //对每一个可能的长度,从每一个字符开始讨论 for (int i = 0; i < length - len + 1; i++) { int j = i + len - 1;//找到len子串end的下标 if (s.charAt(i) == s.charAt(j) && table[i + 1][j - 1]) { //很明显,不啰嗦 table[i][j] = true; substringBeginIndex = i; maxLength = len; } } } //完毕 return s.substring(substringBeginIndex, maxLength + substringBeginIndex); }
上面大神的代码外层循环是从len开始loop,然后对每一个字符进行是否存在长度为len回文子串进行判断;
大家想一下,可不可以从每个字符进行loop,对每个len进行回文子串的判断。答案是不可行的。
关于这道题目,还有更好的,空间复杂度为O(1)的算法,以及亮瞎狗眼的时间复杂度为O(1)的算法.....点这里
相关推荐
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000. Java AC 版本
c c语言_leetcode 0005_longest_palindromic_substring.zip
Longest-Palindromic-Substring(最长回文子串) 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 Sample 1 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 Sample 2 输入...
c语言入门 c语言_leetcode题解05-longest-palindromic-substring.c
java入门 java_leetcode题解之005_Longest_Palindromic_Substring
js js_leetcode题解之5-longest-palindromic-substring.js
* Solution of Longest Palindromic Substring in Java:该题目要求找到最长的回文子串,实现方法使用了动态规划的方法。 * Word Break、Word Break II:该题目要求将字符串分割成单词,实现方法使用了动态规划和...
Palindromic Substring 6.ZigZag Conversion 7.Reverse Integer 8.String To Integer 9.Palindrome Number 10.String To Integer 11.Container With Most Water 12.Integer To Roman 13.Roman To Integer 289 347 ...
最大公共字符串leetcode 最长回文子串 给定一个字符串 s,找出 s 中最长的回文子串。 您可以假设 s 的最大长度为 1000。 Example 1: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. Example 2: ...
leetcode 分类leetcode ...Palindromic Substring 链表 #2:Add Two Numbers 分而治之 #53:Maximum Subarray 队列/集 #3:Longest Substring Without Repeating Characters 优先队列 #23:Merge k Sorted Lists
最大公共字符串leetcode 最长回文子串 给定一个字符串 s,找出 s 中最长的回文子串。 您可以假设 s 的最大长度为 1000。 示例 1: Input: "babad" Output: "bab" Note: "aba" is also a valid answer. 示例 2: ...
longest palindromic substring是一个经典的字符串问题,要求找到字符串中最长的回文子串。可以使用动态规划或Manacher算法来解决该问题。 4. Solution Word Break 单词断词是一个自然语言处理问题,要求将字符串...
Palindromic Substring 7. Reverse Integer 9. Palindrome Number 11. Container With Most Water 12. Integer to Roman 13. Roman to Integer 14. Longest Common Prefix 15. 3Sum 20. Valid Parentheses 21. Merge...
Palindromic Substring 中等 6 ZigZag Conversion 中等 7 Reverse Integer 简单 8 String to Integer (atoi) 中等 9 Palindrome Number 简单 11 Container With Most Water 中等 12 Integer to Roman 中等 13 Roman ...
leetcode双人赛LeetCode 编号 题目 难度 题型 备注 Two Sum 简单 Add Two Numbers 中等 链结串列 重要 Longest Substring Without Repeating Characters 中等 字串 重要 Median of Two Sorted Arrays 困难 数学 ...
Palindromic Substring 006 ZigZag Conversion 007 Reverse Integer 008 String to Integer (atoi) 009 Palindrome Number 010 Regular Expression Matching 011 Container With Most Water 012 Integer to Roman ...
leetcode题库 ...Palindromic Substring 30.1% Medium 0006 ZigZag Conversion 37.5% Medium 0007 Reverse Integer 25.8% Easy 0008 String to Integer (atoi) 15.5% Medium 0009 Palindrome Number 49.4% Easy
Palindromic Substring 最长回文子串 string,dp 8 String to Integer(atoi) 字符串转整数 string 13 Roman to Integer 罗马数字转整数 number,string 14 Longest Common Prefix 最长公共前缀 string 16 3Sum Closest...
LeetCode刷题总结 1.Two Sum 2.Add Two Numbers 3.Longest Substring Without Repeating Characters 4.Median of Two Sorted Arrays 5.Longest Palindromic Substring (Manacher算法待完成) 6.ZigZag Conversion 7....
leetcode信封 ...Palindromic Substring │ RansomNote.java //383. Ransom Note │ RussianDollEnvelope.java //354. Russian Doll Envelopes │ SlidingWindowMaximum.java //239. Sliding Window Maximum