藍橋杯 演算法訓練 Anagrams問題

2021-10-04 22:09:52 字數 1752 閱讀 2624

資源限制

時間限制:1.0s 記憶體限制:512.0mb

問題描述

anagrams指的是具有如下特性的兩個單詞:在這兩個單詞當中,每乙個英文本母(不區分大小寫)所出現的次數都是相同的。如,「unclear」和「nuclear」、「rimon」和「minor」都是anagrams。編寫乙個程式,輸入兩個單詞,然後判斷一下,這兩個單詞是否是anagrams。每乙個單詞的長度不會超過80個字元,而且是大小寫無關的。

輸入格式:輸入有兩行,分別為兩個單詞。

輸出格式:輸出只有乙個字母y或n,分別表示yes和no。

樣例輸入

unclear

nuclear

樣例輸出

yac**:

#include

#include

#include

using

namespace std;

string s1, s2;

map<

char

,int

> m1, m2;

intmain

(void

)else

if(s2[i]

>=

'a'&& s2[i]

<=

'z')

m1[s1[i]]++

; m2[s2[i]]++

;//統計每個字母出現的次數

i++;}

map<

char

,int

>

::iterator it1 = m1.

begin()

; map<

char

,int

>

::iterator it2 = m2.

begin()

;if(m1.

size()

!= m2.

size()

)else

it1++

; it2++;}

cout <<

"y"<< endl;}}

return0;

}

還有一種簡單的,適用於多數情況,在本題中可以通過測試,但有一些情況結果會錯誤。

ac**:

#include

#include

using

namespace std;

int sum1, sum2;

string s1, s2;

intmain

(void

)else

if(s2[i]

>=

'a'&& s2[i]

<=

'z')

//將兩串字元中所有的大寫字母變成小寫

sum1 +

=int

(s1[i]);

sum2 +

=int

(s2[i]);

//將兩字串中所有字母的ascii相加

i++;}

if(sum1 == sum2)

cout <<

"y"<< endl;

else

cout <<

"n"<< endl;

}return0;

}

這種方法如果類似輸入bbcc, aadd這種時還是會輸出y。

藍橋杯 演算法訓練 Anagrams問題

演算法訓練 anagrams問題 時間限制 1.0s 記憶體限制 512.0mb 問題描述 anagrams指的是具有如下特性的兩個單詞 在這兩個單詞當中,每乙個英文本母 不區分大小寫 所出現的次數都是相同的。例如,unclear 和 nuclear rimon 和 minor 都是anagrams...

藍橋杯 演算法訓練 Anagrams問題

登入後才能檢視試題。時間限制 1.0s 記憶體限制 512.0mb 錦囊1 錦囊2 錦囊3 問題描述 anagrams指的是具有如下特性的兩個單詞 在這兩個單詞當中,每乙個英文本母 不區分大小寫 所出現的次數都是相同的。例如,unclear 和 nuclear rimon 和 minor 都是ana...

藍橋杯 演算法訓練 Anagrams問題

問題描述 anagrams指的是具有如下特性的兩個單詞 在這兩個單詞當中,每乙個英文本母 不區分大小寫 所出現的次數都是相同的。例如,unclear 和 nuclear rimon 和 minor 都是anagrams。編寫乙個程式,輸入兩個單詞,然後判斷一下,這兩個單詞是否是anagrams。每乙...