输入一个字符串Str,输出Str里最长回文子串的长度。

回文串:指aba、abba、cccbccc、aaaa这种左右对称的字符串。

串的子串:一个串的子串指此(字符)串中连续的一部分字符构成的子(字符)串
例如 abc 这个串的子串:空串、a、b、c、ab、ac、bc、abc

收起

 

输入

输入Str(Str的长度 <= 1000)

输出

输出最长回文子串的长度L。

输入样例

daabaac

输出样例

5

----------------------------------------------------------------------------------------------------------
可以用dp[i][j]来表示S[i]到S[j]所表示的子串是否是回文子串,此处要分两种情况讨论:
1)如果S[i] == S[j],那么如果dp[i+1][j-1]是1,那就是回文子串,令dp[i][j]为1(dp[i][j]为1表示为回文子串,否则为0为不是回文子串)。
2)如果S[i] != S[j],那么令dp[i][j]=0,因为一定不是回文子串。
另外,面对边界的问题,dp[i][i]一定是回文子串,毕竟单个字母一定是回文的。dp[i][i+1]中,如果S[i] == S[i+1],就是回文子串,否则不为回文子串,此处判断两个字母是否构成回文子串。
C++代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
const int maxn = ;
char str[maxn];
int dp[maxn][maxn];
int main() {
cin >> str;
int len = strlen(str);
int ans = ;
for (int i = ; i < len; i++) {
dp[i][i] = ;
if (str[i] == str[i + ]) {
dp[i][i + ] = ;
ans = ;
}
else {
dp[i][i + ] = ;
}
}
int j;
for (int L = ; L < len; L++) {
for (int i = ; i + L - < len; i++) {
j = i + L - ;
if (str[i] == str[j] && dp[i + ][j - ]) {
dp[i][j] = ;
ans = L;
}
}
}
cout << ans << endl;
system("pause");
return ;
}

最新文章

  1. 使用css打造形形色色的形状!
  2. python 继承中的super
  3. C++ 第一次课堂作业
  4. AEScrypto WEB and ANDROID (GITHUB)
  5. singleton(单件)-对象创建型模式
  6. SSAS:菜鸟摸门
  7. iOS边练边学--iOS中的json数据解析
  8. uwsgi选择使用的python版本(转载)
  9. HDOJ-三部曲一(搜索、数学)-1005-Dungeon Master
  10. MySQL excel导入错误 Out of range value adjusted for column
  11. 反编译Android APK及防止APK程序被反编译
  12. 为什么memset的第二个参数不把int替换成char
  13. liunx 内存文件 tmpfs
  14. How to get the mapping relationship between two columns in a table
  15. 【转】Mapreduce部署与第三方依赖包管理
  16. (一)python基础知识
  17. 使用maven将项目打成jar包
  18. 单例模式 | 程序员都想要探索的 Javascript 设计模式
  19. 微软刚发布的区块链去中心化身份识别系统DID
  20. linux内核入门(1)——基本简介和编译

热门文章

  1. 二、Docker部署应用
  2. ERROR org.hibernate.internal.SessionImpl - HHH000346: Error during managed flush [object references an unsaved transient instance - save the transient instance before flushing: cn.itcast.domain.Custom
  3. 原子变量与CAS算法(二)
  4. 图片文字识别aip的一个小Demo
  5. 志愿者招募 HYSBZ - 1061(公式建图费用流)
  6. 【XSY1295】calc n个点n条边无向连通图计数 prufer序列
  7. 洛谷P4689 [Ynoi2016]这是我自己的发明(莫队,树的dfn序,map,容斥原理)
  8. 如何在TableLayout中均匀拉伸columns?
  9. IntelliJ IDEA快捷键总结
  10. ELK部署详解--elasticsearch