5. Longest Palindromic Substring
来源:互联网 发布:windows消息机制是啥 编辑:程序博客网 时间:2024/06/15 18:12
题目: Longest Palindromic Substring
Given a string S, find the longest palindromic substring inS. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
假设给定字符串“abcbe”
1. 把字符串转换成“#a#b#c#b#e#”。
2. 然后从下标0开始依次以字符串中的字符为中心,依次以step为1进行对称对比,如果相等就继续step++;不相等,跳出此中心点的计算,判断是否为最长回文串。
3. 直到所有字符遍历完毕。
时间复杂度是O(N2),空间是O(n)。
char* longestPalindrome(char* s) { int i=0,j=0,maxLen=0; int length=2*strlen(s)+1; //用时间复杂度是o(N)的方法 printf("The length is %d\n",strlen(s)); char* extendArray=(char *)malloc(sizeof(char)*(length+1)); char* largest=NULL; //进行处理,没个字符和收尾都加上‘#’ while(s[i]!='\0') { if(j%2==0) { extendArray[j]='#'; //在每个字符的前面加上‘#’ j++; } else { extendArray[j]=s[i]; j++; i++; } } //给最后一个字符加上‘#’ extendArray[length-1]='#'; extendArray[length]='\0'; int p=0; while(extendArray[p]!='\0') { printf("%c",extendArray[p++]); } int left=0,right=0; int L=0,R=0;//左右边界 for(i=0;i<length;i++) { int center=i; int step=0; L=center-step; R=center+step; while(L>=0 && R <length) { if(extendArray[L] != extendArray[R] ) { break; } else { step++; L=center-step; R=center+step; } } if(maxLen < step-1) { maxLen=step-1; left=L+1; right=R-1; } } largest=(char *)malloc(sizeof(char)*(right-left+2)); i=0; for(int k=left;k<=right;k++) { if(extendArray[k]!='#') { largest[i++]=extendArray[k]; } } largest[i]='\0'; return largest; }
0 0
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5.Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- 5. Longest Palindromic Substring
- map函数,java和C++的常见用法
- 会谈报表
- java代码调用webservice接口
- 知道这20个正则表达式,能让你少写1,000行代码
- 面谈报告(1)
- 5. Longest Palindromic Substring
- LIST_求链表中倒数第K个结点的值
- 问卷
- 博弈论入门(1)——游戏与必胜策略
- 瞎写的一些函数
- 认识安卓中的MIME TYPE
- Intent 向下一个活动传递数据
- 吴亦凡,下载吴亦凡
- Python拷贝对象(浅拷贝copy与深拷贝deepcopy)