資源限制
時間限制: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; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/6721.html
標籤:其他
上一篇:藍橋杯 試題 演算法訓練 審美課
下一篇:組合數學筆記
