Leetcode242.有效的字母异位词(哈希表)

Leetcode242.有效的字母异位词

题目描述

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

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

示例

在这里插入图片描述

知识点:哈希表

思路

因为这题实际是从一个集合(也就s中)和t中进行对比,看看内容是否完全一致,那么我们可以考虑利用哈希表。数组就是最简单的哈希表,这题我们利用数组来写,我们将s存进一个数组中,怎么存呢?
我们可以考虑构造一个数组recorde[26],为什么是26?因为26个字母嘛。我们可以把a存到record[0]里面,每当s中出现一个a就record[0]++;用数组来记录26个字母中每个字母出现的次数。
然后再每当t中出现一个字母时record对应-1,这样对比结束,如果完全一致的话应该record每一个数都是0,如果有一个数非0,那么就证明多了或少了一个或多个字母,返回false。

代码

class Solution {
public:
    bool isAnagram(string s, string t) {
    int record[26]={0};
    if(s.size()!=t.size())
    return false;
    for(int i=0;i<s.size();i++)
    {
        record[s[i]-'a']++;
    }
    for(int j=0;j<t.size();j++)
    {
        record[t[j]-'a']--;
    }
    for(int k=0;k<26;k++)
    {
        if(record[k]!=0)
        return false;
    }
    return true;
    }
};

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值