1109 共同的前缀

共同的前缀

1、题目内容

Description
给你K个字符串,请求出它们的最长公共前缀。 输入 第一行是一个整数N,表示测试样例的个数。 每个测试样例的第一行是一个整数K(2 <= k <= 20),表示有多少个字符串;以后每行是一个字符串,每个字符串的长度不超过200个字符。 输出 每行输出一个样例的结果。先输出“Case #: ”,其中’#’为样例的序号(从1开始),冒号为英文冒号,后接一个空格;然后是对应样例的结果。如果没有公共前缀,则无需输出前缀,但Case信息仍需要输出。

Sample Input
2
3
ACD
ACDEF
ACDFE
2
ABC
BCD

Sample Output
Case 1: ACD
Case 2:

2、题目分析

这个题目:首先就是case的输出,采用for语句模式实现多样例比较方便对case输出。在寻找共同前缀的时候,我们可以把第一个字符串当作共同的前缀,然后将后面的字符串不断与第一个字符串去比较,每次比较需要一个字符一个字符的去比,当遇到字符不同的时候,设置截止符号‘\0’并退出当前比较。

3、参考代码

#include<stdio.h>
#include<string.h>
int main()
{
	int n,t;
	scanf("%d",&n);
	for(t=1;t<=n;t++)
	{
		int i,k,m,n,j;
		char common[201]; //用来做比较的第一个字符串 
		char str[201];
		scanf("%d",&k);
		for(i=0;i<k;i++)
		{
			if(i==0) //尚未开始比较前,把第一个字符串当作共同的前缀 
			{
				scanf(" %s",common);
				n=strlen(common); 
			}
			else
			{
			    scanf(" %s",str);	 //此后,每输入一个字符串就对字符串序列依个比较一次 
			    for(j=0;j<n;j++)
				{
					if(str[j]!=common[j])//当出现字母不同时,设置截止符号‘\0’并退出 
					{
						common[j]='\0';
					}
				} 
			}
		}
		printf("Case %d: %s\n",t,common); //按照题目要求输出 
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_42987451/article/details/83178826
今日推荐