首页 > 其他分享 >有效的字母异位词(力扣简单哈希表题)

有效的字母异位词(力扣简单哈希表题)

时间:2023-02-13 18:56:30浏览次数:42  
标签:表题 ch return string 力扣 哈希 table false

题目:

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

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

思路:

想法一:

  • 还是使用map容器来计数,和上几个题解法一致
class Solution {
public:
    bool isAnagram(string s, string t) {
        unordered_map<char,int> m;
        for(char ch : s){
            ++m[ch];
        }
        if(s.size() != t.size()){
            return false;
        }else{
            for(int i = 0;i < t.size();++i){
            if(m[t[i]] == 0){
                return false;
            }
            else if(m[t[i]] > 0){
                --m[t[i]];
            }
        }
        return true;
        }
        

    }
};
  • 但是时间复杂度稍高,于是看了一下官方题解
class Solution {
public:
    bool isAnagram(string s, string t) {
        if (s.length() != t.length()) {
            return false;
        }
        vector<int> table(26, 0);
        for (auto& ch: s) {
            table[ch - 'a']++;
        }
        for (auto& ch: t) {
            table[ch - 'a']--;
            if (table[ch - 'a'] < 0) {
                return false;
            }
        }
        return true;
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/valid-anagram/solutions/493231/you-xiao-de-zi-mu-yi-wei-ci-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 官方题解使用的数组,可能是map在构建过程中时间复杂度会偏高,但是本人更喜欢用map,如非必要,则不用数组表示。

标签:表题,ch,return,string,力扣,哈希,table,false
From: https://www.cnblogs.com/isku-ran/p/17117371.html

相关文章

  • 赎金信(力扣标准哈希表计数题)
    题目:给你两个字符串:ransomNote和magazine,判断ransomNote能不能由magazine里面的字符构成。如果可以,返回true;否则返回false。magazine中的每个字符只能在ra......
  • 哈希表
     classSolution{public:vector<int>intersect(vector<int>&nums1,vector<int>&nums2){if(nums1.size()>nums2.size()){return......
  • 力扣---1138. 字母板上的路径
    我们从一块字母板上的位置(0,0)出发,该坐标对应的字符为board[0][0]。在本题里,字母板为board=["abcde","fghij","klmno","pqrst","uvwxy","z"],如下所示。我们可......
  • 哈希学习笔记
    板:P3370【模板】字符串哈希复杂度:O(n)用途:将一串字符串映射到一个数怎么写?选取一个较小质数p选取一个较大质数mod1将字符串转换成一个p进制在mod1定义下的......
  • springboot 配置redis集群 JedisCluster 3主3从 哈希槽模式
    packagecom.estate.util;importredis.clients.jedis.*;importjava.util.HashSet;importjava.util.Set;publicclassRedisClient{privatestaticJedis......
  • 力扣---2. 两数相加
    给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表......
  • 力扣---1. 两数之和
    给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但......
  • 力扣---2335. 装满杯子需要的最短总时长
    现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满2杯不同类型的水或者1杯任意类型的水。给你一个下标从0开始、长度为3的整数数组amount,其中amount[0......
  • 杨辉三角(力扣简单题,resize())函数
    题目:给定一个非负整数numRows,生成「杨辉三角」的前numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。示例1:输入:numRows=5输出:[[1],[1,1],[......
  • 重塑矩阵(力扣简单题)
    题目:在MATLAB中,有一个非常有用的函数reshape,它可以将一个mxn矩阵重塑为另一个大小不同(rxc)的新矩阵,但保留其原始数据。给你一个由二维数组mat表示的mxn矩......