算法打卡第六天

发布于:2025-05-25 ⋅ 阅读:(22) ⋅ 点赞:(0)

19.有效的字母异位词

(力扣242题)

给定两个字符串 st ,编写一个函数来判断 t 是否是 s 的 字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

输入: s = "rat", t = "car"
输出: false

提示:

  • 1 <= s.length, t.length <= 5 * 104

  • st 仅包含小写字母

  • 解题思路

首先用数组record统计字符串s中各字符出现次数,再遍历字符串t将对应字符次数减一,最后检查数组是否全为 0,若存在非零元素则两字符串字符频率不同,返回false,否则返回true

class Solution {
public:
    bool isAnagram(string s, string t) {
        int record[26] = {0};
        for(int i = 0; i < s.size();i++)
        {
            record[s[i] - 'a']++;
        }
        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;
        
        
        
    }
};

20 两个数组的交集

(力扣349题)

给定两个数组 nums1nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序

示例 1:

输入:nums1 = [1,2,2,1], nums2 = [2,2]
输出:[2]

示例 2:

输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出:[9,4]
解释:[4,9] 也是可通过的

提示:

  • 1 <= nums1.length, nums2.length <= 1000
  • 0 <= nums1[i], nums2[i] <= 1000
class Solution {
public:
    bool isAnagram(string s, string t) {
        int record[26] = {0};
        for(int i = 0; i < s.size();i++)
        {
            record[s[i] - 'a']++;
        }
        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;
        
        
        
    }
};

网站公告

今日签到

点亮在社区的每一天
去签到