2つの文字列s とtを指定して、t がsのアナグラムかどうかを判別する関数を記述します。
例1:
入力:s = "anagram"、t = "nagaram"
出力:true
例2:
入力:s = "rat"、t = "car"
出力:false
注:文字列に小文字のアルファベットのみが含まれていると想定する場合があります。
フォローアップ:入力にUnicode文字が含まれている場合はどうなりますか?このような場合にソリューションをどのように適応しますか?
難易度要因
中
解決策1:ソート後に比較する
クラスSolution { public : bool isAnagram(string s、string t){ sort(s.begin()、s.end()); sort(t.begin()、t.end()); s == tを返す; } };
解決策2:各文字列の文字数を記録する
クラスSolution { public : bool isAnagram(string s、string t){ int s_alpha [ 26 ] = { 0 }; int t_alpha [ 26 ] = { 0 }; if(s.size()!= t.size())は falseを返し ます。 for(int i = 0 ; i <s.size(); ++ i){ s_alpha [s [i] - ' a ' ] ++ ; t_alpha [t [i] -' a ' ] ++ ; } for(int j = 0 ; j < 26 ; ++ j){ if(s_alpha [j]!= t_alpha [j]) return false ; } trueを返し ます。 } };