11.1 242. 有效的字母异位词

  1. class Solution {
  2. public:
  3. bool isAnagram(string s, string t) {
  4. int record[26]={0};
  5. //记录s每个字母出现次数
  6. for(int i=0;i<s.size();i++){
  7. record[s[i]-'a']++;
  8. }
  9. //记录t中每个字母出现次数,想减,最后都为0才是true;
  10. for(int i=0;i<t.size();i++){
  11. record[t[i]-'a']--;
  12. }
  13. for(int i=0;i<26;i++){
  14. if(record[i]!=0){
  15. return false;
  16. }
  17. }
  18. return true;
  19. }
  20. };

11.2 1. 两数之和

  1. class Solution {
  2. public:
  3. vector<int> twoSum(vector<int>& nums, int target) {
  4. unordered_map<int,int> map;
  5. for(int i=0;i<nums.size();i++){
  6. auto it=map.find(target-nums[i]);
  7. if(it!=map.end()){
  8. return {it->second,i};
  9. }
  10. map.insert(pair<int,int>(nums[i],i));
  11. }
  12. return {};
  13. }
  14. };

11.3 454. 四数相加 II

  1. //两两结合
  2. class Solution {
  3. public:
  4. int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {
  5. unordered_map<int,int> map;
  6. for(int a:nums1){
  7. for(int b:nums2){
  8. map[a+b]++;
  9. }
  10. }
  11. int count=0;
  12. for(int c:nums3){
  13. for(int d:nums4){
  14. auto it=map.find(0-(c+d));
  15. if(it!=map.end()){
  16. count+=map[0-(c+d)];
  17. }
  18. }
  19. }
  20. return count;
  21. }
  22. };

11.4 383. 赎金信

  1. class Solution {
  2. public:
  3. bool canConstruct(string ransomNote, string magazine) {
  4. int record[26]={0};
  5. for(int i=0;i<magazine.size();i++){
  6. record[magazine[i]-'a']++;
  7. }
  8. for(int i=0;i<ransomNote.size();i++){
  9. record[ransomNote[i]-'a']--;
  10. if(record[ransomNote[i]-'a']<0){
  11. return false;
  12. }
  13. }
  14. return true;
  15. }
  16. };