Longest Palindromic Substring
来源:互联网 发布:手把手教你单片机 pdf 编辑:程序博客网 时间:2024/04/25 16:06
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)动态规划。
这里动态规划的思路是 dp[i][j] 表示的是 从i 到 j 的字串,是否是回文串。
则根据回文的规则我们可以知道:
如果s[i] == s[j] 那么是否是回文决定于 dp[i+1][ j - 1]
当 s[i] != s[j] 的时候, dp[i][j] 直接就是 false。
动态规划的进行是按照字符串的长度从1 到 n推进的。
2)中心扩展法因为回文字符串是以中心轴对称的,所以如果我们从下标 i 出发,用2个指针向 i 的两边扩展判断是否相等,那么只需要对0到
n-1的下标都做此操作,就可以求出最长的回文子串。但需要注意的是,回文字符串有奇偶对称之分,即"abcba"与"abba"2种类型,
因此需要在代码编写时都做判断。
#include <iostream>using namespace std;string getExpandAroundCenter(string s,int pre,int post){string res;int len;while(pre >= 0 && post <= s.size()-1 && s[pre] == s[post]){pre --;post ++;}len = post - pre + 1; res = s.substr(pre,len);return res;}string longestPalindromicSub(string s){if(s.size() == 0 || s.size() == 1)return s;int longest=0;string str1,str2,res;for(int i=0;i<s.size()-1;i++){//abcbastr1 = getExpandAroundCenter(s,i,i);//abbastr2 = getExpandAroundCenter(s,i,i+1);if(str1.size()>str2.size()){if(str1.size() > longest){longest = str1.size();res = str1;}}else{if(str2.size() > longest){longest = str2.size();res = str2;}}}return res;}void main(){string s ="qabcbafffd";string res = longestPalindromicSub(s);printf("The longest palindromic substring is %s.\n",res.c_str());}
0 0
- LeetCode: Longest Palindromic Substring
- LeetCode Longest Palindromic Substring
- LeetCode: Longest Palindromic Substring
- [Leetcode] Longest Palindromic Substring
- Longest Palindromic substring
- [LeetCode] Longest Palindromic Substring
- LeetCode5:Longest Palindromic Substring
- Leetcode : Longest Palindromic Substring
- Longest Palindromic Substring
- Longest Palindromic Substring
- [LeetCode]Longest Palindromic Substring
- leetcode Longest Palindromic Substring
- Longest Palindromic Substring
- LeetCode-Longest Palindromic Substring
- Longest Palindromic Substring
- Longest Palindromic Substring
- [LeetCode] Longest Palindromic Substring
- Longest Palindromic Substring leetcode
- Python 编程语言的发展简史
- sort 和 qsort比较
- ThreadState
- crm提取数据扩展时出错
- Linux操作系统中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的压缩与解压
- Longest Palindromic Substring
- Python基础教程(第十章)
- netbeans 控制台输出乱码的解决
- 平衡二叉树
- 一张图总结软件测试
- 应聘华为FPGA逻辑工程师
- 第九章 基于案例的推理(CBR)分类法
- Android Volley框架详解
- Linux内核机制:工作队列