面试算法之哈希专题

news2024/10/7 12:22:56

赎金信

在这里插入图片描述

class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        // 小写字母
        int r_cnt[26];
        int m_cnt[26];
        for(int i = 0; i< magazine.size(); i++) {
            m_cnt[magazine[i]-'a']++; // 统计
        }
        // 对比

        for(int i = 0; i< ransomNote.size(); i++) {
            if(m_cnt[ransomNote[i]-'a']) {
                m_cnt[ransomNote[i]-'a']--;
            } else {
                return false;
            }
        }
        return true;
    }
};
class Solution {
public:
    bool canConstruct(string ransomNote, string magazine) {
        // 小写字母
        int r_cnt[26];
        int m_cnt[26];
        for(int i = 0; i< magazine.size(); i++) {
            m_cnt[magazine[i]-'a']++; // 统计
        }
        // 对比

        for(int i = 0; i< ransomNote.size(); i++) {
            if(m_cnt[ransomNote[i]-'a']) {
                m_cnt[ransomNote[i]-'a']--;
            } else {
                return false;
            }
        }
        return true;
    }
};

同构字符串

在这里插入图片描述

class Solution {
public:
    bool isIsomorphic(string s, string t) {
        unordered_map<char,char> s_map;
        unordered_map<char,char> t_map;

        int s_size = s.size();
        int t_size = t.size();
        if(s_size != t_size) {
            return false;
        } 
        for(int i = 0; i< s_size; i++) {
            char x = s[i];
            char y = t[i];
            if((s_map.count(x) && s_map[x] != y) || (t_map.count(y) && t_map[y] != x)) {
                return false;
            }

            s_map[x] = y;
            t_map[y] = x;
        }
    return true;    
    }
};

收获

了解了一下 有关于 unordered_map 中 count 函数的使用
s_map.count(x) 就是 键为 x 的个数

逐步解析
在这里插入图片描述

方法二
思路

通过 match 建立关系
通过 count 记录 t[i] 是否已经有映射

这部分是表示, 不存在 s[i] 的映射, 但是发现 t[i] 已经做好映射了 ( count[t[i]] > 0 ) 直接返回 false

  			if (match[s[i]] == '\0') { // 如果当前字符没有映射关系
                if (count[t[i]] == 0) { // 如果当前字符在t中没有出现过
                    match[s[i]] = t[i]; // 建立映射关系
                    count[t[i]] = 1; // 将该字符在t中的出现次数加1
                }
                else
                    return false; // 如果当前字符在t中已经出现过,则返回false
            }
class Solution {
public:
    bool isIsomorphic(string s, string t) {
        unordered_map<char, char> match; // 用于存储字符之间的映射关系
        unordered_map<char, int> count; // 用于记录字符在t中出现的次数
        
        for (int i = 0; i < s.size(); i++) {
            if (match[s[i]] == '\0') { // 如果当前字符没有映射关系
                if (count[t[i]] == 0) { // 如果当前字符在t中没有出现过
                    match[s[i]] = t[i]; // 建立映射关系
                    count[t[i]] = 1; // 将该字符在t中的出现次数加1
                }
                else
                    return false; // 如果当前字符在t中已经出现过,则返回false
            }
            else { // 如果当前字符已经有映射关系
                if (match[s[i]] != t[i]) { // 如果映射关系不正确
                    return false; // 返回false
                }
            }
        }
        return true; // 所有字符都满足同构条件,返回true
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1659457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python-----容器的介绍以及操作

1.列表和元组 1.列表是什么, 元组是什么&#xff1a; 编程中, 经常需要使用变量, 来保存/表示数据. 如果代码中需要表示的数据个数比较少, 我们直接创建多个变量即可. 但是有的时候, 代码中需要表示的数据特别多, 甚至也不知道要表示多少个数据. 这个时候, 就需要用到列表 列表…

ChatGPT开源的whisper音频生成字幕

1、前言 好了&#xff0c;那接下来看一下whisper开源库的介绍 有五种模型大小&#xff0c;其中四种仅支持英语&#xff0c;提供速度和准确性的权衡。上面便是可用模型的名称、大致的内存需求和相对速度。如果是英文版的语音&#xff0c;直接想转换为英文。 本来我是想直接在我的…

数据库(MySQL)基础:约束

一、概述 1.概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 2.目的&#xff1a;保证数据库中数据的正确、有效性和完整性。 3.分类 约束描述关键字非空约束限制该字段的数据不能为nullnot null唯一约束保证该字段的所有数据都是唯一…

粮油码垛机:自动化与智能化仓储的关键角色

在快速发展的现代化仓储物流领域&#xff0c;粮油码垛机正逐渐成为自动化与智能化仓储的关键角色。它以其高效、精准、节省人力的特点&#xff0c;赢得了众多粮油生产企业的青睐&#xff0c;成为仓储管理升级换代的明星产品。 一、粮油码垛机的技术革新 随着科技的发展&#…

欧洲杯/奥运会-云直播

欧洲杯/奥运会要来了&#xff0c;如何升级自己的网站让你的顾客都能观赏直播已提高用户量呢&#xff1f;&#xff01; 【功能完善、平滑兼容】 云直播支持 RTMP 推流、 HLS 源站等多种直播源接入方式&#xff0c;提供直播 SDK&#xff0c;支持多终端适配&#xff0c;上行码率…

DDD架构理论详解

文章目录 一、概念入门1. 概念简介2. DDD的核心理念3. 范式4. 模型5. 框架6. 方法论7. 软件设计的主要活动 二、DDD核心理论1. Domain领域层都包含什么&#xff1f;2. 聚合、实体和值对象3. 仓储&#xff0c;封装持久化数据4. 适配&#xff08;端口&#xff09;&#xff0c;调用…

音频系统模块级实验

加zkhengyang进数字音频系统研究开发交流答疑群(课题组) 1 购买ADC-I2S模块&#xff0c;购买I2S-DAC模块 进行音频系统搭建&#xff0c;可加深对i2s音频总线的理解 2 用电脑的音频输出进行实验

邊緣智能2024—AI開發者峰會(5月9日)數碼港即將啟幕

隨著 AI &#xff08;人工智能&#xff09;技術的飛速發展&#xff0c;我們正迎來邊緣計算智能化與分布式AI深度融合的新時代&#xff0c;共同演繹分布式智能創新應用的壯麗篇章。"邊緣智能2024 - AI開發者峰會"將聚焦於這一前沿領域&#xff0c;探討如何通過邊緣計算…

大模型LLM之SFT微调总结

一. SFT微调是什么 在大模型的加持下现有的语义理解系统的效果有一个质的飞跃&#xff1b;相对于之前的有监督的Pre-Train模型&#xff1b;大模型在某些特定的任务中碾压式的超过传统nlp效果&#xff1b;由于常见的大模型参数量巨大&#xff1b;在实际工作中很难直接对大模型训…

树莓派 CM4S - 计算模块系列的新内存变体

自 2014 年以来&#xff0c;我们专门为工业和嵌入式应用设计提供 Raspberry Pi 的强大功能&#xff0c;我们惊讶并欣喜地看到客户使用 Raspberry Pi 计算模块的方式变得多种多样。我们很高兴地宣布&#xff0c;我们已经扩展了 Compute Module 4S 产品&#xff1a;这些工业板现在…

uniapp开发小程序---文章转发分享问题

一、需求 标题这里有三个新闻分类&#xff08;跳转的列表页是同一个&#xff0c;是根据分类字段来判断显示的&#xff09;&#xff1a; 在列表页面点击右上角分享给好友后是下图所示&#xff1a; 要求点击每个分享过来的页面时&#xff0c;跳转到对应的新闻列表下。 二、代码…

pycharm虚拟环境venv

虚拟环境–原理 虚拟环境是利用了操作系统中环境变量&#xff0c;以及进程间环境隔离的特性&#xff0c;python就是在激活虚拟环境的时候&#xff0c;激活脚本会将当前命令行程序的 PATH 修改为虚拟环境的&#xff0c;这样执行命令就会在被修改的 PATH 中查找&#xff0c;避免…

python爬取sci论文等一系列网站---通用教程超详细教程

环境准备 确保安装了Python以及requests和BeautifulSoup库。 pip install requests beautifulsoup4确定爬取目标 选择一个含有SCI论文的网站&#xff0c;了解该网站的内容布局和数据结构。 &#xff08;1&#xff09;在浏览器中访问目标网站&#xff0c;右键点击页面并选择…

JavaScript异步编程——07-Promise实例的方法【万字长文,感谢支持】

Promise 实例的方法简介 Promise 的 API 分为两种&#xff1a; Promise 实例的方法&#xff08;也称为&#xff1a;Promis的实例方法&#xff09; Promise 类的方法&#xff08;也称为&#xff1a;Promise的静态方法&#xff09; Promise 实例的方法&#xff1a;我们需要实…

F1C200S 添加韦根驱动笔记(设备树修改)

参考资料&#xff1a;linux开发笔记&#xff08;buildroot 增加自己的开发板支持文件&#xff09;-CSDN博客 首先需要有F1C200S开发板的原理图和buildroot 如果没有可以在我的资源里面下载。 参考上面的文章修改这个目录下的设备树即可。 /home/test/lc/buildroot/board/wi…

【神经网络】矩阵乘法的应用详解

文章目录 一、多维数组使用NumPy创建和操作多维数组 二、矩阵乘法矩阵乘法的基本定义计算 2x2 矩阵的乘积矩阵形状的要求特殊情况&#xff1a;矩阵与向量的乘积 三、神经网络中的矩阵乘法神经网络的结构简介矩阵乘法在神经网络中的应用计算细节和NumPy的实现 一、多维数组 多维…

【机器学习300问】80、指数加权平均数是什么?

严格讲指数加权平均数并不是机器学习中的专有知识&#xff0c;但他是诸多梯度下降优化算法的基础&#xff0c;所有我打算专门写一篇文章来介绍这种计算平均数的方法。还是老规矩&#xff0c;首先给大家来两个例子感受一下什么是指数加权平均数。 一、两个例子感性理解什么是指…

【数据结构(邓俊辉)学习笔记】栈与队列01——栈应用(栈混洗、前缀后缀表达式、括号匹配)

文章目录 0. 概述1. 操作与接口2. 操作实例3. 实现4. 栈与递归5. 应用5.1 逆序输出5.1.1 进制转换5.1.1.1 思路5.1.1.2 算法实现 5.2 递归嵌套5.2.1 栈混洗5.2.1.1 混洗5.2.1.2 计数5.2.1.3 甄别 5.2.2 括号匹配5.2.2.1 构思5.2.2.2 实现5.2.2.3 实例 5.3 延迟缓冲5.3.1 中缀表…

https介绍,加密解密(举例+必要性,对称/非对称加密介绍),数字摘要/指纹(介绍,应用(session id,网盘的秒传功能))

目录 https 引入 介绍 加密解密层 介绍 没有绝对的安全 使用ssl的弊端 加密解密 概念 加密 解密 秘钥 举例 现实中 网络中 加密的必要性 常见加密方式 对称加密 特点 非对称加密 特点 数字摘要/指纹 介绍 应用 session id 百度网盘的秒传功能 https …

设备能耗数据在线监测

在追求可持续发展和绿色经济的当下&#xff0c;企业对于设备能耗的管理愈发重视。设备能耗数据在线监测&#xff0c;不仅能帮助企业实时掌握设备的运行状况&#xff0c;还能为企业节能减排、降低运营成本提供有力支持。HiWoo Cloud平台凭借其先进的技术和丰富的经验&#xff0c…