題目:
Given two strings?s?and?t, write a function to determine if?t?is an anagram of?s.
For example,
s?= "anagram",?t?= "nagaram", return true.
s?= "rat",?t?= "car", return false.
Note:
You may assume the string contains only lowercase alphabets.
思路:
統計第一個字符串的每一個字符出現的次數,再統計第二個字符串的每一個字符出現的次數。然后比較,假設都同樣則返回true。
假設不同返回false。
代碼1:
class Solution {
public:bool isAnagram(string s, string t) {int len1 = s.size();int len2 = t.size();if(len1 != len2)return false;int map[26] = {0};//因為題目確定每一個字符都是小寫字母。因此僅僅須要申請26個空間就可以for(int i = 0 ; i < len1 ; i++){map[s[i]-'a']++;}for(int i = 0 ; i < len1 ; i++){map[t[i]-'a']--;if(map[t[i]-'a'] < 0)return false;}return true;}
};
代碼2:
class Solution {
public:bool isAnagram(string s, string t) {int len1 = s.size();int len2 = t.size();if(len1 != len2)return false;int map[26] = {0};//因為題目確定每一個字符都是小寫字母,因此僅僅須要申請26個空間就可以for(int i = 0 ; i < len1 ; i++){map[s[i]-'a']++;map[t[i]-'a']--;}for(int i = 0 ; i < len1 ; i++){if(map[t[i]-'a'] != 0)return false;}return true;}
};