蓝桥杯试题 算法训练 Anagrams问题(C++版)

问题描述
  Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。
  输入格式:输入有两行,分别为两个单词。
  输出格式:输出只有一个字母Y或N,分别表示Yes和No。
  输入输出样例
样例输入

Unclear
Nuclear

样例输出

Y

注意:

不能通过一个int a[26]={0}加以判断,因为有
aa
bb
得出Y
的错误

代码:

#include
#include 
using namespace std;
void found(string str, int arr[])//记录str出现字母的次数
{
	string str3 = "abcdefghijklmnopqrstuvwxyz";
	for (int i = 0; i < str.length(); i++)
	{
		if (str[i] >= 'A' && str[i] <= 'Z')
		{
			str[i] += 32;
		}
		for (int j = 0; j < str3.length(); j++)
		{
			if (str[i] == str3[j])
			{
				arr[j]++;
			}
		}
	}
}
int main()
{
	string str1, str2;
	cin >> str1 >> str2;
	int a[26] = { 0 }, b[26] = { 0 };
	found(str1, a);
	found(str2, b);
	int flag = 1;
	for (int j = 0; j < 26; j++)
	{
		if (a[j] != b[j])
		{
			cout << 'N';
			flag = 0;
			break;
		}
	}
	if (flag)
	{
		cout << 'Y';
	}
	return 0;
}

欢迎任何形式的转载,但请务必注明出处。

限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

你可能感兴趣的:(蓝桥杯)