LeetCode之Longest Palindromic Substring
2015-09-03 19:17
387 查看
/*用dp[i][j]表示子串s[i...j]是否为回文,则有 dp[i][j] = d[i+1][j-1] && s[i] == s[j](i+1 < j); dp[i][j] = (s[i] == s[j])(i+1 == j)并且,dp[i][i] = true;。*/ class Solution { public: string longestPalindrome(string s) { if(s.size() <= 1) return s; int len = 1, start = 0; const int size = s.size(); bool dp[size][size]; memset(dp, 0, sizeof(dp)); for(int i = 0; i < s.size(); ++i) dp[i][i] = true; for(int j = 1; j < s.size(); ++j){ for(int i = 0; i + j < s.size(); ++i){ if(j == 1) dp[i][i+j] = (s[i] == s[i+j]); else dp[i][i+j] = (dp[i+1][i+j-1] && (s[i] == s[i+j])); if(dp[i][i+j] && len < j+1){ len = j+1; start = i; } } } return s.substr(start, len); } };
相关文章推荐
- 谈谈A*
- iOS通过 API 文档自学方法
- 自动装箱问题以及字符创的==问题
- github使用教程
- HDU 1520 & POJ 2342 Anniversary party(树形DP入门题)
- iOS开发之语音朗读文字
- Linux系统mysql密码和远程访问设置
- 前端最重要的工作——HTML构架
- linux下 mysql 操作
- hdu~3650(气球着色)
- 条款 04 make sure that objects are initialized before they're used
- hdu 4734 F(x) 数位dp
- android学习笔记(13) intent Services多线程初步
- swift详解之二十二-----------UINavigationController的基本用法和页面传值几种方式
- latex教程
- 提高生活质量,以自我为中心
- Java基础针对自己薄弱环节总结07(递归、IO流)
- 凸包(旋转卡壳求最远点)
- Android数据库--创建表和LitePal的基本用法
- 新浪微博开放平台提交审核时Android签名生成