string+DP leetcode-4.最长回文子串
5. 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.
找出给定数组中,最长的回文子串。最长输入尾1000。
样例
Example 1:
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.Example 2:
Input: "cbbd"
Output: "bb"Example 3:
Input: "abcd"
Output: "a"Example 4:
Input: "eeeeeeeeeeeeeeeeeeeeee"
Output: "eeeeeeeeeeeeeeeeeeeeee"
思路1:暴力,不可行。
判断每一个字串是否是回文串,找出最长。
事件复杂度:O(n3) (1000的输入, n3复杂度, 10003=109,会超1000ms)
class Solution {
public:
string longestPalindrome(string s) {
string res = "";
int len = s.length();
if(len == || len == )
return s; for(int i=; i<len; i++)
{
string tmpStr = "";
tmpStr += s[i];
int j = i+;
for(; j<len; j++)
{
if(s[j] != s[i])
tmpStr += s[j];
else
{
tmpStr += s[j];
if(judge(tmpStr) && tmpStr.length() > res.length())
res = tmpStr;
}
}
}
if(res.length() == )
res += s[];
return res;
} bool judge(string s)
{
int len = s.length();
for(int k=; k<=len/; k++)
if(s[k] != s[len--k])
return false;
return true;
}
};
思路2:DP
class Solution {
public:
string longestPalindrome(string s) {
int len = s.length();
if(len < )
return s;
bool dp[len][len] = {};
int start = , span = ; for(int i=; i<len; i++)
{
dp[i][i] = ;
for(int j=; j<i; j++)
{
dp[j][i] = (s[i]==s[j] && (i-j < || dp[j+][i-]));
if(dp[j][i] && (i-j+ > span))
{
span = i-j+;
start = j;
}
}
}
return s.substr(start, span);
}
};
string+DP leetcode-4.最长回文子串的更多相关文章
- LeetCode:最长回文子串【5】
LeetCode:最长回文子串[5] 题目描述 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000. 示例 1: 输入: "babad" 输出: ...
- 【LeetCode】最长回文子串【动态规划或中心扩展】
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad"输出: "bab"注意: " ...
- (最长回文子串 线性DP) 51nod 1088 最长回文子串
输入一个字符串Str,输出Str里最长回文子串的长度. 回文串:指aba.abba.cccbccc.aaaa这种左右对称的字符串. 串的子串:一个串的子串指此(字符)串中连续的一部分字符构成的子(字符 ...
- Java实现 LeetCode 5 最长回文子串
5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab&quo ...
- [LeetCode] 5. 最长回文子串 ☆☆☆(最长子串、动态规划)
最长回文子串 (动态规划法.中心扩展算法) https://leetcode-cn.com/problems/longest-palindromic-substring/solution/xiang- ...
- 【LeetCode】最长回文子串-中心扩展法
[问题]给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 : 输入: "babad" 输出: "bab" 注意: ...
- [leetCode]5. 最长回文子串(DP)
题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 题解 dp.先初始化长度为1和长度为2的串.再依次算长度为3,4,5.... 当找到回文串时,若长度比当 ...
- [LeetCode] 5. 最长回文子串
题目链接:https://leetcode-cn.com/problems/longest-palindromic-substring/ 题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你 ...
- 【LeetCode】最长回文子串-动态规划法
[问题]给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 : 输入: "babad" 输出: "bab" 注意: ...
- 【leetcode 5. 最长回文子串】解题报告
方法一:中心扩展算法 解题思路:从左到右每一个字符都作为中心轴,然后逐渐往两边扩展,只要发现有不相等的字符,则确定了以该字符为轴的最长回文串,但需要考虑长度为奇数和偶数的不同情况的处理(长度为偶数时轴 ...
随机推荐
- Mybase解决保存文件后再打开不能修改编辑
1.问题复现 2.解决方式 3.可以修改编辑
- 异步回收fork出的子进程(僵尸进程)
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h&g ...
- UI界面测试
概念:指测试用户界面的风格是否满足用户要求.文字是否正确.页面是否美观.文字与图片组合是否完美.操作是否友好等. 1.窗体测试 { 窗体大小. 移动窗体. 缩放窗体. 显示分辨率. 状态栏. 工具栏. ...
- 使用AndEngine重制《是男人就上一百层》
1.为什么还要做<是男人就上一百层> 一是在用Android原生API开发完<是男人就上一百层>以后,一直想体验一下用引擎开发游戏是个什么感觉,顺便也让游戏听上去高大上一些(使 ...
- 字符串匹配算法---BF
Brute-Force算法,简称BF算法,是一种简单朴素的模式匹配算法,常用语在一个主串string 内查找一个子串 pattern的出现位置. 核心思想: i 遍历主串string i 每自增一次, ...
- java中创建线程的方式
创建线程的方式: 继承thread 实现runnable 线程池 FurureTask/Callable 第一种:继承thread demo1: public class demo1 { public ...
- fastadmin 后台管理 时间戳字段使用
数据库样式 int 11 后台add.html: <div class="form-group"> <label class="control-labe ...
- 自定义Hive函数
7. 函数 7.1 系统内置函数 查看系统自带的函数:show functions; 显示自带的函数的用法:desc function upper(函数名); 详细显示自带的函数的用法:desc fu ...
- python之 -> 的含义
函数或方法标注通常用于 :类型提示:例如以下函数预期接受两个 int 参数并预期返回一个 int 值: def sum(a: int, b: int) -> int: return a + b ...
- 编写python高质量python代码的59个有效方法
第1条:确认自己的python版本 第2条:遵循PEP8的风格 1.空格 对于 占据多行的长表达式来说, 除了首行之外的其余各行都应该在通常的缩进级别上再加4个空格. 每行字符数不应该超过79. 2. ...