资源限制
时间限制:1.0s 内存限制:512.0MB
问题描述
Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。
输入格式
输入有两行,分别为两个单词。
输出格式
输出只有一个字母Y或N,分别表示Yes和No。
样例输入
Unclear
Nuclear
样例输出
Y
方法一、
#include<iostream> #include<string> #include<cctype> using namespace std; int main(){ string s1,s2; cin>>s1>>s2; if(s1.length()!=s2.length()) { cout<<'N'<<endl; return 0; } int f[26]={0}; for(int i=0;i<s1.size();i++) { //判断两个单词包含的26个英文字母(不区分大小写)的数量是否相同 f[tolower(s1[i])-'a']++; f[tolower(s2[i])-'a']--; } for(int i=0;i<26;i++) if(f[i]!=0) { cout<<'N'<<endl; return 0; } cout<<'Y'<<endl; return 0; }
方法二、
#include<iostream> #include<algorithm> #include<string> #include<cctype> using namespace std; string f(string &s) { string ans=s; for(int i=0;i<ans.length();i++) ans[i]=tolower(ans[i]); sort(ans.begin(),ans.end()); return ans; } int main() { string s1,s2; cin>>s1>>s2; if(s1.length()!=s2.length()) cout<<'N'<<endl; if(f(s1)==f(s2)) //排序后直接比较是否相等 cout<<'Y'<<endl; else cout<<'N'<<endl; return 0; }