首页 > 其他分享 >代码随想录-哈希

代码随想录-哈希

时间:2023-11-28 11:44:24浏览次数:26  
标签:return string int res 代码 随想录 ++ vector 哈希

242.有效的字母异位词

https://leetcode.cn/problems/valid-anagram/description/
image

class Solution {
public:
    bool isAnagram(string s, string t) {
        if(s.size()!=t.size())
        return false;

        int hash[26] = {0};
        for(int i = 0; i < s.size(); i++)
        {
            hash[s[i] - 'a']++;
        }
        for(int i = 0; i < s.size(); i++)
        {
            hash[t[i] - 'a']--;
        }
        for(int i = 0; i < 26; i++)
        {
            if(hash[i]!=0)
            return false;
        }
        return true;
    }
};

349. 两个数组的交集

https://leetcode.cn/problems/intersection-of-two-arrays/description/
image

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> res;
        unordered_set<int> nums(nums1.begin(),nums1.end());//把nums1全添加进来
        for(int num : nums2)                               //遍历nums2数组
        {
            //nums2的元素在nums1里(也就是nums)出现过
            if(nums.find(num) != nums.end())
            res.insert(num);
        }
        return vector<int> (res.begin(),res.end());
    }
};

383. 赎金信

https://leetcode.cn/problems/ransom-note/
image


class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        int len1 = ransomNote.size();
        int len2 = magazine.size();
        if(len1 > len2)
        return false;

        int hash[26] = {0};
        for(int i = 0; i < len2; i++)
        {
            hash[magazine[i]-'a']++;
        }
        for(int i = 0; i < len1; i++)
        {
            hash[ransomNote[i]-'a']--;
        }
        
        for(int i = 0; i < 26; i++)
        {
            if(hash[i] < 0)
            return false;
        }
        return true;
    }
};

49.字母异位词分组

https://leetcode.cn/problems/group-anagrams/description/
image

class Solution {
public:
    vector<vector<string>> groupAnagrams(vector<string>& strs) {
        //对所有的string排序,比如bac cba cab 排完序后都是abc, 于是可以用map, abc就是索引, value值就是bac cba cab
        unordered_map<string,vector<string>> mp;
        for(string s : strs) //表示遍历strs的所有string, 这个str是入参
        {
            string cur = s;          //用于记录cur,因为排序完之后就变了
            sort(s.begin(),s.end()); //bac->abc 
            mp[s].push_back(cur);
        }
        vector<vector<string>> res;
        for(auto vs : mp)//一次推入一个vector<string>
        res.push_back(vs.second);
        return res;
    }
};

438.找到字符串中的所有字母异位词

https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/
image

class Solution {
public:
    vector<int> findAnagrams(string s, string p) {
        int m = p.size();
        if(m > s.size())return {};

        vector<int> res;
        vector<int> hashs(26),hashp(26);
        for(int i = 0; i < m; i++)
        {
            hashp[p[i]-'a']++;
            hashs[s[i]-'a']++;
        }
        //此刻的hashp[]就是记录了abc有一个a 一个b 一个c
        if(hashp == hashs)
        res.push_back(0);
        for(int i = m; i < s.size(); i++)
        {
            //滑动窗口,右边的加进来,左边的滑出去
            hashs[s[i]-'a']++;
            hashs[s[i-m]-'a']--;

            if(hashp == hashs)
            res.push_back(i-m+1);
        }
        return res;
    }
};

349.两个数组的交集

https://leetcode.cn/problems/intersection-of-two-arrays/
image

class Solution {
public:
    vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
        unordered_set<int> res;
        unordered_set<int> nums(nums1.begin(),nums1.end());//把nums1全添加进来
        for(int num : nums2)                               //遍历nums2数组
        {
            //nums2的元素在nums1里(也就是nums)出现过
            if(nums.find(num) != nums.end())
            res.insert(num);
        }
        return vector<int> (res.begin(),res.end());
    }
};

标签:return,string,int,res,代码,随想录,++,vector,哈希
From: https://www.cnblogs.com/xsl-blogs/p/17852381.html

相关文章

  • 用了这款插件,零代码基础也能写代码你信吗?
    一、写在前面使用过chatGPT的同学,可能都会有过这样的经历?遇到代码不会的问题,本能的就会去求助chatGPT,然后并根据chatGPT的回答去优化代码。但是,没了的话,chatGPT是不是也帮不上忙了?还是只有我是这样的情况 ̄□ ̄||当然,这也让我偶然发现这个插件,对于我这种代码渣渣来说,真的是有种被带飞的感......
  • 根据累进税率计算每月个人所得税 python代码
    使用时将工资、社保和公积金替换即可,累进税率表和起征点根据所在当地调整importnumpyasnp#累进税率表:交税比例及速算扣除数tax_rates={36000:{"tax_rate":0.03,"quick_deduction":0},144000:{"tax_rate":0.1,"quick_deduction":2520},300000:{&quo......
  • 【git】pycharm上推送代码到云仓
    1、pycharm中安装插件,并且重启2、出现shareprojectongitee,如果是初识提交,会有addfilesforinitialcommit修改代码后,提交......
  • Java 实现统一社会信用代码有效性校验
    一、调用工具类:importcom.yf.utils.StringUtils;importjava.util.HashMap;importjava.util.Map;/***统一社会信用代码有效性校验**@authorFengQing*@programruoyi-vue-file*@description*@date2023/09/11*/publicclassTyshxydmVerificationUtil......
  • 【git】pycharm上拉取云仓代码
    前言当我们在github上看到别人写的项目,想拉到本地学习下。如何用pycharm把git仓库的代码拉取到本地电脑呢?环境准备:1.本地电脑已经安装了git2.已经注册过github账号3.pycharmpycharm配置先自己注册github账号,本地安装git环境,打开Pycharm-File-Settings-Versioncontr......
  • Lua-curl库做数据抓取代码示例
    --导入Lua-curl库luarocksinstallluacurl--创建一个curl实例,localc=curl.init()--设置信息c.setopt(curl.PROXY,")--设置目标URLc.setopt(curl.URL,"")--设置获取类型为GETc.setopt(curl.GET,true)--执行请求localresponse=c.perform()--检查......
  • 低代码部署方式大揭秘:满足你的多种选择
    本文由葡萄城技术团队原创并首发。转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。、前言低代码开发平台为企业提供创新的应用程序开发和部署方法,让非技术人员也能够轻松创建和发布应用程序。通过直观的图形化界面和少量编码,企业可以......
  • multipleWindow3dScene代码解释
    title:深入分析:GitHubTrending项目"multipleWindow3dScene"banner_img:https://cdn.studyinglover.com/pic/2023/11/b57a22bd9cf8a1c0a954fd61e6c311f2.pngdate:2023-11-2719:18:00tags:-文字生成图片这是由chatGPT生成的文章,内容是关于GitHubTrending项目"multi......
  • 手机小程序开发定制的常用代码?
    在这个数字化时代,手机小程序开发定制已经成为一种趋势,它可以根据用户的个性化需求,开发出符合其需求的应用程序,那么,手机小程序开发定制的常用代码有哪些呢?下面,我们将为您详细解答。一、开发环境搭建在进行手机小程序开发定制之前,我们需要搭建开发环境,常用的开发环境包括微信开发者......
  • 【Flask使用】第6篇:Flask数据库和表单验证。0基础md文档集合(附代码,可自取)
    本文的主要内容:flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用:宏、继承/包含、模板中特有变量和函数、Flask-WTF表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy、增删改查操作、案例、蓝图、单元测......