当前位置: 首页 > news >正文

DAY 32 leetcode 242--哈希表.有效的字母异位词

哈希表理论基础

一般哈希表都是用来快速判断一个元素是否出现集合里。

要枚举的话时间复杂度是O(n),但如果使用哈希表的话, 只需要O(1)就可以做到。

一般哈希冲突(两个数据映射到了同一个下标下)有两种解决方法, 拉链法和线性探测法。

常见的哈希结构

数组
set (集合)
map(映射)

哈希表支持的操作

put(String key,Integer value): 向哈希表中添加一个新的键值对。
get(Object key): 根据给定的键返回对应的值,如果不存在则返回 null。
remove(Object key): 删除键对应的键值对,并返回被删除的值。
containsKey(Object key): 检查哈希表是否包含指定的键。
containsValue(Object value): 检查哈希表是否包含至少一个指定的值。
size(): 返回哈希表中键值对的数量。
isEmpty(): 检查哈希表是否为空。

题号242

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

用普通数组写

class Solution {
    public boolean isAnagram(String s, String t) {
        int size=s.length();//数组是最简单的哈希表
        if(size!=t.length())return false;
        int []record=new int [26];//用来记录的数组
        for(int i=0;i<size;i++){
            record[s.charAt(i)-'a']++;//在对应的字母下标下加加
        }
        for(int i=0;i<size;i++){
            record[t.charAt(i)-'a']--;
        }
        for(int i=0;i<26;i++){
            if(record[i]!=0)//record数组中有不是0的说明不同
            return false;
        }
        return true;
    }
}

创建一个哈希表

class Solution {
    public boolean isAnagram(String s, String t) {
        int size=s.length();
        if(size!=t.length())return false;
        //创建哈希表
        Hashmap<Character,Integer> dic=new Hashmap<>();
        for(int i=0;i<size;i++){
            dic.put(s.charAt(i),dic.getOrDefault(s.charAt(i),0)+1);
        }
        for(int i=0;i<size;i++){
            dic.put(t.charAt(i),dic.getOrDefault(s.charAt(i),0)-1);
        }
        for(int val:dic.values())
        //声明了一个循环变量 val,它在每次迭代中都会被赋值为 dic 中的下一个值。
        {
            if(val!=0)
            return false;
        }
        return true;
    }
}

相关文章:

  • PHP Swoole 启动时的进程关系
  • ISIS报文
  • ES6 新特性全面总结
  • 26考研|高等代数:线性空间
  • 关于CodeJava的学习笔记——10
  • 医院信息系统与AI赋能的介绍
  • 【Easylive】获取request对象的两种方式
  • windows 下 通过虚拟化拦截对一个text.txt文件的访问 如果要打开的文件名为 text.txt 提示无权限
  • MySQL in和exists的取舍
  • 批量清空或者删除 PDF 文档中作者、创建程序、修改时间等元数据
  • 【Easylive】application.yml文件中都是什么作用
  • Day78 | 灵神 | 反转链表 两两交换链表中的节点
  • 每天学一个 Linux 命令(9):useradd/userdel
  • EDI传输中的OFTP AS2
  • 【模拟CMOS集成电路设计】电荷泵(Charge bump)设计与仿真(示例:栅极开关CP+轨到轨输入运放+基于运放CP)
  • CentOS 7 安装 Kubernetes 1.28.2 集群
  • 企业如何构建风控合规体系?
  • LLM - 推理大语言模型 DeepSeek-R1 论文简读
  • python接口自动化测试:接口数据依赖
  • 蓝桥杯备考---》贪心算法之矩阵消除游戏
  • 在线修图网站/网站收录查询代码
  • 网站备案 广东/seo排名赚app下载
  • wordpress taobaoke/石家庄seo网站排名
  • 电子技术网/推送者seo
  • 有关网站开发的文献/开封网络推广哪家好
  • ipv6域名解析 做网站/百度在西安有分公司吗