[leetcode] 5-Longest Palindromic Substring
来源:互联网 发布:向量的斜对称矩阵 编辑:程序博客网 时间:2024/04/29 01:56
Palindromic Substring:回文子串,即一个字符串从左向右写和从右向走写是一样的,或者说字符串是对称。
解决思路:遍历字符串,依次找到所有回文子串的中间位置,分别尝试往两边扩展到最大长度。取所有得到的回文子串中最长的。
一个回文子串的中间位置有两种可能,
1)形如----aa-----即s[i] == s[i-1]
2)形如----axa----即s[i] == s[i-2]
对于出现---aaa---即同时满足s[i] == s[i-1]和s[i] == s[i-2]时,分别按两种情形尝试扩展。
注意上述情形都不出现,即结果为单个字符串,最长回文串长度为1,如‘’abc‘’,结果为‘’a‘’或‘’b‘’或‘’c‘’
代码:
char* longestPalindrome(char* s){ int start = 0 ,end = 0;int i = 0,j = 0,k = -1,len = 0,maxLen = 0;char *res;res = (char *)malloc(1001*sizeof(char));while(s[i] != '\0'){if(i >= 2 && s[i] == s[i-2]){j = i + 1;k = i - 3;while(s[j] != '\0' && k >=0 && s[j] == s[k]){++ j;-- k;}len = (j - 1) - (k + 1) + 1;if(len > maxLen){start = k + 1;end = j - 1;maxLen = len;}}if(i >= 1 && s[i] == s[i-1]){j = i + 1;k = i - 2;while(s[j] != '\0' && k >=0 && s[j] == s[k]){++ j;-- k;}len = (j - 1) - (k + 1) + 1;if(len > maxLen){start = k + 1;end = j - 1;maxLen = len;}}++ i;}if(maxLen > 0){for(i=0;i<maxLen;++i){res[i] = s[start+i];}res[maxLen] = '\0';}else{res[0] = s[0];res[1] = '\0';} return res;}
0 0
- LeetCode 5 - Longest Palindromic Substring
- LeetCode(5) Longest Palindromic Substring
- Leetcode【5】:Longest Palindromic Substring
- [leetcode 5] Longest Palindromic Substring
- LeetCode 5 Longest Palindromic Substring
- [Leetcode] 5 - Longest Palindromic Substring
- LeetCode 5:《Longest Palindromic Substring》
- [leetcode 5] Longest Palindromic Substring
- LeetCode | #5 Longest Palindromic Substring
- leetcode 5 Longest Palindromic Substring
- LeetCode 5 Longest Palindromic Substring
- LeetCode 5 Longest Palindromic Substring
- LeetCode(5) Longest Palindromic Substring
- LeetCode 5:Longest Palindromic Substring
- LeetCode 5 - Longest Palindromic Substring
- leetcode #5 Longest Palindromic Substring
- Longest Palindromic Substring leetcode 5
- leetcode 5 -- Longest Palindromic Substring
- jQuery.extend 函数详解
- 微信公众号项目笔记 二
- 软件测试 day3
- 手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单
- Python性能分析指南
- [leetcode] 5-Longest Palindromic Substring
- HTML5设计原理【转】
- HTML5简单介绍
- 手把手教你开发Chrome扩展二:为html添加行为
- 手把手教你开发Chrome扩展三:关于本地存储数据
- Go在谷歌:以软件工程为目的的语言设计
- 三大WEB服务器对比分析(apache ,lighttpd,nginx)
- ASP.NET Repeater里面a href使用参数
- mysql及其python适配器安装