蒜头君有一个字符串。他想知道这个字符串是否可以在 恰好更改一个字符 的情况,变成一个回文串?

这题需要注意的是,恰好改变一个字符的情况包括了如“aba”这样中间可改可不改的情况

#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	int i;
	int y =n;
	int m=0;
	int e[n+1];
	while(n!=0)
	{
		char a[10000]={0};
		int k = 0;
		do{
			scanf("%c",&a[k]);
			k++;
		}while(a[k-1]!='\n');//
		k = k-1;
		if(a[k]=='\n'&&n==y)
		{
			y = y + 1;
			continue;
		}
		int c,b;
		m=0;
			if(k%2==0){
			for(i=0;i<=(k-1)/2;i++)
			{
				c = a[i];
				b = a[(k-i-1)]; 
				if(c!=b) 
				{
					m++;
				}
				if(m>1)
				{
					e[n] = 0;
					break;
				}
			}
			if(m==0)
			{
					e[n] = 0;
			}else if(m==1){
					e[n] = 1;
			}
			n--;
		}else
		{
				for(i=0;i<=(k-1)/2;i++)
			{
				c = a[i];
				b = a[(k-i-1)]; 
				if(c!=b) 
				{
					m++;
				}
				if(m>1)
				{
					e[n] = 0;
					break;
				}
			}
			if(m==0)
			{
					e[n] = 1;
			}else if(m==1){
					e[n] = 1;
			}
			n--;	
		}
	}
		y = y - 1;
		for(i=y;i>0;i--)
		{
			if(e[i]==1)
			{
				printf("YES");
			}else if(e[i]==0)
			{
				printf("NO");
			}
			printf("\n");
		}
	return 0;
}
//变量名定义重复导致出错 
//计数器没有清0 
//

 

Guess you like

Origin blog.csdn.net/qq_61551764/article/details/121384487