站点图标 陌路寒暄

中心对称问题(线性表)

中心对称问题(线性表)

时间: 1ms        内存:128M

描述:

(线性表)设单链表的表头指针为h,结点结构由data和next两个域构成,其中data域为字符型。写出算法dc(h,n),判断该链表的前n个字符是否中心对称

输入:

第1行为n,第二行为字符串


输出:

对称输出Yes,否则输出No。

示例输入:

3
2323443

示例输出:

Yes

提示:

参考答案(内存最优[752]):

#include<stdio.h>

int main(){
	char str[1000];
	int n,i,j,fac=1;
	scanf("%d%s",&n,str);
	if(n%2==0){
		for(i=n/2,j=n/2+1; i>=0;){
			if(str[i]!=str[j])
				fac=0;
			i--;
			j++;
		}
	}
	else{
		for(i=n/2-1,j=n/2+1; i>=0; ){
			if(str[i] != str[j])
				fac=0;
			i--;
			j++;
		}
	}
	if(fac==1)
		printf("Yes\n");
	else
		printf("No\n");
	return 0;
}

参考答案(时间最优[0]):

#include<stdio.h>

int main(){
	char str[1000];
	int n,i,j,fac=1;
	scanf("%d%s",&n,str);
	if(n%2==0){
		for(i=n/2,j=n/2+1; i>=0;){
			if(str[i]!=str[j])
				fac=0;
			i--;
			j++;
		}
	}
	else{
		for(i=n/2-1,j=n/2+1; i>=0; ){
			if(str[i] != str[j])
				fac=0;
			i--;
			j++;
		}
	}
	if(fac==1)
		printf("Yes\n");
	else
		printf("No\n");
	return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

退出移动版