pata 1084

题目
pata1084
题目思路
利用一个散列函数将每一个可能输入的元素c映射为一个数字a,建立一个数组i,第一次输入时每输入一个元素i[a]++,第二次输入时i[a]–,最后按照第一次输入的数据对数组扫描,输出i[a]不为0的元素。
参考代码

#include<iostream>
#include<cstring>

using namespace std;

int id[26+10+1]={0};

int hasht(char c);

int main()
{
	
	char c[81],c2[81];
	
	scanf("%s",c);
	for(int i=0;i<strlen(c);i++)
	{
		id[hasht(c[i])]++;
	}
	scanf("%s",c2);
	for(int i=0;i<strlen(c2);i++)
		id[hasht(c2[i])]--;
	for(int i=0;i<strlen(c);i++)
	{
		if(id[hasht(c[i])]!=0)
		{
			if(c[i]>='a'&&c[i]<='z')
				c[i]=c[i]-'a'+'A';
			printf("%c",c[i]);
			id[hasht(c[i])]=0;
		}
	}
	
	
	
	return 0;
	
} 

int hasht(char c)
{
	
	
	int a=0;
	
	if(c>='A'&&c<='Z')
	{
		a=c-'A';
	}
	else if(c>='a'&&c<='z')
		a = c-'a';
	else if(c>='0'&&c<='9')
		a=c-'0'+26;
	else if(c=='_')
		a=36; 
	
	return a;
	
	
}
发布了27 篇原创文章 · 获赞 0 · 访问量 398

猜你喜欢

转载自blog.csdn.net/zz73zz76/article/details/104187344