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

华为oj 明明的随机数&&计算字符个数_第1张图片

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

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

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

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

#include
using namespace std;

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

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

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

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

#include
#include
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;
}
华为oj 明明的随机数&&计算字符个数_第2张图片

很简单:

#include
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;
}


你可能感兴趣的:(华为oj,初级)