PTA c语言 最长对称子串

 其实这题的思路很好想 就是 输入一个串后 然后依次检索每一个字符 然后在后面找出相同的一个字符,然后以这两个作为起点 ,分别前后的比较,如果相等 ,就加一,这样就可以找到最大的串,假如要求输出这个字符 ,也很简单,只需要开一个字符数组即可,即可以一个一个的赋值,也可以用strncpy赋给新数组,具体的实现如果不理解可以评论出来。

写的可能很差,希望大家可以提出宝贵的建议,不胜感激。

金陵科技学院  软件工程 11/24

#include<stdio.h> 
#include <math.h>
int main ()
{
	char c[1002];
	gets(c);
	int max=0;
	int i,j;
	int t,flag=0;
	for (i=0;c[i]!='\0';i++)//一个一个字母的检索 
	{
		t=0;
		for (j=i;c[j]!='\0';j++)//从当前的字母开始向后检索 
		{
			if (c[i]==c[j])
			{
				while (1)//死循环
				{
					if (c[i+t]==c[j-t])
						{
							t++;
						}
					else break;//结束
                    if(j-t<0) break;//保证不能超出范围  如超出 出去 
				}
			if (t>max) max=t;//记录最大值 
			}
		}
	}
	printf ("%d",max);
	return 0;
}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值