面试题 最长回文子串

原创 2016年08月30日 14:45:12

求最长回文子串


方法:中心法,回文最重要的是确定中心。

start即是中心,left和right就是回文的左右边界。

若start右边有重复字母,让right一直延长到无重复,start直接从那边开始

然后就是回文判断。

这样大约是O(n)


 string longestPalindrome(string s) 
 {
	int i,n,start,left,right,max_len;
	string ans_s;
	n=s.length();
	if(n<2)
		return s;
	start=0;  //中心最开始为0
	max_len=0;   //最长子串长度为0

	while(start<n && n-start>max_len/2 )  //若剩余长度小于max_len/2,那么肯定不会再有结果,因为他们都是中心!
	{
		left=right=start;
		while(right+1<n&&s[right+1]==s[start])  //右方延伸到无重复地带
			right++;
		
		start=right+1;//下次检索中心跳过重复字母,从那个地方开始

		while(left-1>=0&&right+1<n)    //若left-1和right+1都在范围内
			if(s[left-1]==s[right+1])   //判断是否相等,相等则再向两边延伸,否则退出
			{
				left--;
				right++;
			}
			else break;

		if(right-left+1>max_len)  //判断长度
		{
			max_len=right-left+1;
			ans_s=s.substr(left,right-left+1);
		}
	}
	return ans_s;
 }


【面试题】最长回文子串

在网上找了几个版本,改编的,好难啊。加油。   //最大回文子串问题 #include #include using namespace std; //返回最长的回文子串 char *Max_S...
  • bxyill
  • bxyill
  • 2012年10月10日 08:28
  • 898

C++/C求最长回文子串

  • 2010年07月31日 15:13
  • 1KB
  • 下载

最长回文子串(百度笔试题和hdu 3068)

版权所有。所有权利保留。 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17123559 求一个字符串的最长回文...

最长回文子串c语言

  • 2013年06月26日 22:05
  • 2KB
  • 下载

最长回文子串

  • 2015年03月30日 21:01
  • 571B
  • 下载

4月3日腾讯笔试题“最长回文子串”PS

题目如上: 下面附上代码: package leetcode; import java.util.ArrayList; import java.util.Scanner; public cla...
  • kenzyq
  • kenzyq
  • 2016年04月04日 11:24
  • 465

面试题5:求字符串中回文子串的最大长度

题目来源:华为机试题(密码截取)密码截取描述: Catcher是MCA国的情报员,他工作时发现敌国会用一些对称的密码进行通信,比如像这些ABBA,ABA,A,123321,但是他们有时会在开始或结...

HDOJ 3068 && 最长回文子串

先上 超时 直接 用C++ 的string  为什么

Manacher算法——最长回文子串

今天抽空学习了下这个简单的算法……背景Manacher用于求最长回文子串问题 是最简单也是最为常用的算法首先,我们需要考虑回文串长度的奇偶 会发现长度为奇时,回文串有一个对称点 长度为偶时则不然...
  • linkfqy
  • linkfqy
  • 2017年06月13日 15:13
  • 566
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面试题 最长回文子串
举报原因:
原因补充:

(最多只允许输入30个字)