bool isAnagram(string s, string t) {
if(s.length() != t.length()){
return false;
}
map<char, int> tmp1;
map<char, int> tmp2;
for(int i=0; i< s.length(); i++){
if(tmp1.count(s[i]) > 0){
++tmp1[s[i]];
}else{
tmp1[s[i]] = 1;
}
if(tmp2.count(t[i]) > 0){
++tmp2[t[i]];
}else{
tmp2[t[i]] = 1;
}
}
for(auto iter = tmp1.begin(); iter!=tmp1.end(); iter++){
if(tmp2.count(iter->first) <= 0){
return false;
}
if(tmp2[iter->first] != iter->second){
return false;
}
}
return true;
}
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
vector<int> result;
set<int> tmp1(nums1.begin(), nums1.end());
set<int> tmp2(nums2.begin(), nums2.end());
for(auto iter= tmp2.begin(); iter != tmp2.end(); iter++){
if(tmp1.count(*iter)){
result.push_back(*iter);
}
}
return result;
}
vector<int> twoSum(vector<int>& nums, int target) {
map<int, int> tmp;
for(int i=0; i<nums.size(); i++){
tmp[target-nums[i]] = i;
}
for(int i=0; i<nums.size(); i++){
if(tmp.count(nums[i]) && i != tmp[nums[i]]){
return {i, tmp[nums[i]]};
}
}
return {};
}