B--字母数字大战

B--字母数字大战

时间: 1ms        内存:128M

描述:

字母数字发生了战争,决定要分家,各自调选自己的家族成员。如果一个字符串仅由数字构成的那么属于dight家族;如果是仅由字母构成的那么属于letter家族;如果是由数字和字母一起构成的那么属于mixed家族。

输入:

输入一个字符串,长度不超过100,且字符串中只能包括数字或大、小写字母。

输出:

输出该字符串的家族类型。

示例输入:

123456ff123a8

示例输出:

mixed

提示:

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

#include "stdio.h"
#include "string.h"
int main()
{
	int i; 
	char str[1001];
	int flag=0;
	while(~scanf("%s",str))
	{
		getchar();
		for(i=0;i<strlen(str);i++)
		{
			if(str[i]<='9' && str[i]>='0' && (flag==1 || flag==0))
			{
				flag=1;
				continue;
			}
			if(str[i]<='z' && str[i]>='a' && (flag==2 || flag==0))
			{
				flag=2;
				continue;
			}
			if(str[i]<='9' && str[i]>='0' && flag==2)
			{
				flag=3;
				break;
			}
			if(str[i]<='z' && str[i]>='a' && flag==1)
			{
				flag=3;
				break;
			}	
		}
		if(flag==1)
			printf("dight\n");
		if(flag==2)
			printf("letter\n");	
		if(flag==3)
			printf("mixed\n");
		flag=0;
	}
	return 0;
}

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

#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;
int main()
{	
	char str[101];
	while(cin>>str)
	{
		int i;
		bool zimu=false;
		bool num=false;
		for(i=0;i<strlen(str);i++)
		{
			if(str[i]>='0'&&str[i]<='9')num=true;
			else if(str[i]>='a'&&str[i]<='z')zimu=true;
			else if(str[i]>='A'&&str[i]<='Z')zimu=true;
			if(zimu&&num)break;
		}
		if(zimu&&num)cout<<"mixed"<<endl;
		else if(zimu)cout<<"letter"<<endl;
		else cout<<"dight"<<endl;
	}
	return 0;
}

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

点赞