class Solution {public: bool isAnagram(string s, string t) { int record[26]={0}; //记录s每个字母出现次数 for(int i=0;i<s.size();i++){ record[s[i]-'a']++; } //记录t中每个字母出现次数,想减,最后都为0才是true; for(int i=0;i<t.size();i++){ record[t[i]-'a']--; } for(int i=0;i<26;i++){ if(record[i]!=0){ return false; } } return true; }};
class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_map<int,int> map; for(int i=0;i<nums.size();i++){ auto it=map.find(target-nums[i]); if(it!=map.end()){ return {it->second,i}; } map.insert(pair<int,int>(nums[i],i)); } return {}; }};
//两两结合class Solution {public: int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) { unordered_map<int,int> map; for(int a:nums1){ for(int b:nums2){ map[a+b]++; } } int count=0; for(int c:nums3){ for(int d:nums4){ auto it=map.find(0-(c+d)); if(it!=map.end()){ count+=map[0-(c+d)]; } } } return count; }};
class Solution {public: bool canConstruct(string ransomNote, string magazine) { int record[26]={0}; for(int i=0;i<magazine.size();i++){ record[magazine[i]-'a']++; } for(int i=0;i<ransomNote.size();i++){ record[ransomNote[i]-'a']--; if(record[ransomNote[i]-'a']<0){ return false; } } return true; }};