华为oj 明明的随机数&&计算字符个数

在此提供三种解法,其实三种解法殊途同归,不就是排个序,去个重就好!

1.利用map特点,插入map之后,会自动根据关键字排序,而且不会出现相同的关键字,正好满足特性

#include<iostream>
#include<map>
using namespace std;
int main()
{
	map<int, int> in;
	int num, temp;
	cin >> num;
	for (int i = 0; i<num; i++)
	{
		cin >> temp;
		in[temp]++;
	}

	for (map<int, int>::iterator iter=in.begin(); iter != in.end(); iter++)
	{
		cout << iter->first << endl;
	}
	return 0;
}
2.因为给出数据不会大于1000所以,所以我们用一个大小为1000的数组存储输入数,数组值存储出现个数,我们要去重,只要输出数组值大于0的下标就好!

#include<iostream>
using namespace std;

int main()
{
	int hash[1001], count, num;
	memset(hash, 0, sizeof(int)* 1001);

	cin >> count;
	for (int i = 0; i<count; i++)
	{
		cin >> num;
		hash[num]++;
	}

	for (int i = 1; i <= 1000; i++)
	{
		if (hash[i]>0)
		{
			cout << i << endl;
		}
	}
	return 0;
}

3.将输入数据排序,那么重复的数字肯定是连续的,所有我们在输出的时候进行过滤就好

#include<iostream>
#include<algorithm>
using namespace std;

int main()
{
	int stack[100], count, num,j,k;

	cin >> count;
	for (int i = 0; i < count; i++)
	{
		cin >> num;
		stack[i] = num;
	}

	sort(stack, stack + count);

	for (j = 0, k = 0; k < count;)
	{
		if (stack[j] == stack[k])
		{
			k++;
		}
		else
		{
			cout << stack[j] << endl;
			j = k;
		}
	}

	cout << stack[count-1] << endl;

	return 0;
}


很简单:

#include<iostream>
using namespace std;
int main()
{
	char in[100];
	gets_s(in);
	int len = strlen(in);
	int count = 0;
	char temp;
	cin >> temp;
	for (int i = 0; i < len; i++)
	{
		if (in[i] == temp||in[i]==temp+32||in[i]==temp-32)
		{
			count++;
		}
	}
	cout << count << endl;
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值