最长回文子串(C/C++)

最长回文子串(C/C++)最长回文子串(C/C++)

大家好,又见面了,我是你们的朋友全栈君。

给定一个字符串,求它的最长回文子串的长度。

思路:从给定字符串的头部开始,在每个字符的位置处设置两个指针,分别向前和向后两个方向依次判断各字符是否相等,当两个指针指向的字符不相等时计算回文子串的长度。重复这样的过程,直至扫描到字符串的最后一个字符为止。

内层的两个 for 循环,它们分别对于以 i 为中心的,长度为奇数和偶数的两种情况,整个代码遍历中心位置 i 并以之扩展,找出最长的回文。

注意:回文子串长度的计算方法

代码如下:

//最长回文子串
#include <iostream>

using namespace std;

//*s为字符串,n为字符串的长度
int LagPalindrome(char *str, int n)
{
	int count = 0;
	int max = 0;//最长回文子串的长度
	if (str == NULL || n<1)
	{
		return 0;
	}
	for (int i = 0; i < n; i++)
	{		
		//子串为奇数时
		for (int j = 0; (i-j)>=0&&(i+j)<n; j++)
		{
			if (str[i - j] != str[i + j])
			{
				break;
			}
			count = 2 * j + 1;
		}
		if (count > max)
		{
			max = count;
		}
		//子串为偶数时
		for (int k = 0; (i - k)>=0 && (i + k + 1) < n; k++)
		{
			if (str[i - k] != str[i + k+1])
			{
				break;
			}
			count=2*k + 2;
		}
		if (count > max)
		{
			max =count ;
		}
	}
	
	return max;
}

int main( )
{
	char str[] = "abccba";
	int n = strlen(str);
	int MaxLen;
	MaxLen = LagPalindrome(str, n);
	
	cout << "最长回文子串的长度是:"<<MaxLen<<endl;

	return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141985.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dpkg 命令详解[通俗易懂]

    dpkg 命令详解[通俗易懂]名词解释    “dpkg”是“DebianPackager”的简写。为“Debian”专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自“Debian”的“Linux”发行版都会使用“dpkg”,例如“Ubuntu”、“Knoppix”等。名词由来    dpkg是Debian软件包管理器的基础,它由伊恩·默多克于1993年创

    2022年5月21日
    84
  • fec浅析_fec13

    fec浅析_fec13fec(ForwardErrorCorrection),向前纠错。fec主要用于在传输过程中,发现带宽时够的,但是会有丢包的情况。一般用于udp传输,比如webrtc传视频,视频会议传输视频。另外提一下的是,udp传输视频一般会把一帧视频分为很多个分组,为啥要分组,因为如果不分组,传输过程中丢失了任何一个分组,整帧数据就丢失了。按mtu以下的分组传输好处是,可以实现udt,和fec了。比如一帧分了5个分组,增加一个fec冗余包,当前面5个分组中丢失任何一个,都可以通过这个fec冗

    2022年8月11日
    2
  • unity3d实战_unity3d游戏制作

    unity3d实战_unity3d游戏制作[Unity3D入门]分享一个自制的入门级游戏项目"坦克狙击手"我在学Unity3D,TankSniper(坦克狙击手)这个项目是用来练手的。游戏玩法来自这里(http://www.4399.com/flash/127672_3.htm),虽然抄袭了人家的创意,不过我只用来练习(目前还很不成熟,离人家的境界相差很大),坦克、导弹、建筑模型来自网络,应该不会有版权问题吧。由于模型和代码总共…

    2022年8月10日
    4
  • 抖音视频下载爬虫编写的完整过程!爬取app的过程

    抖音视频下载爬虫编写的完整过程!爬取app的过程

    2022年3月7日
    40
  • 数据库的建立、增、删、改、查[通俗易懂]

    数据库的建立、增、删、改、查[通俗易懂]快来快来一起学技术吧!数据库的建立、增、删、改、查,有图,有文,有例子!

    2022年7月19日
    24
  • 【考研经验】一个苍山的不入流的学生的考研之路[通俗易懂]

    【考研经验】一个苍山的不入流的学生的考研之路[通俗易懂]转载于王道论坛,原文作者为:YaphetS迷弟点击原文链接,可进入原帖。如果要是让我再考一次的话,我一定不会像这次这样吊儿郎当。眼前仿佛回到了2017年的寒假,刚过完年,几乎从未…

    2022年5月13日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号