当前位置: 首页 > 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;}
}


http://www.mrgr.cn/news/96653.html

相关文章:

  • Oracle数据库数据编程SQL<3.5 PL/SQL 存储过程(Procedure)>
  • 魔改chromium——基础环境搭建
  • Open GL ES ->GLSurfaceView在正交投影下的图片旋转、缩放、位移
  • OpenCV图像输入输出模块imgcodecs
  • 什么是 CSSD?
  • OCCT(2)Windows平台编译OCCT
  • OpenCV图像输入输出模块imgcodecs(imwrite函数的用法)
  • Oracle数据库数据编程SQL<3.4 PL/SQL 自定义函数(Function)>
  • 初始ARM
  • 同步SVPWM调制策略的初步学习记录
  • 3-栈、队列、数组
  • 《大模型部署》——ollama下载及deepseek本地部署(详细快速部署)
  • 【VM虚拟机ip问题】
  • 类的默认成员函数
  • Vue React
  • Qt基础:信号槽
  • PHP 开发API接口签名验证
  • npm webpack打包缓存 导致css引用地址未更新
  • 分享一个Drools规则引擎微服务Docker部署
  • mysql JSON_ARRAYAGG联合JSON_OBJECT使用查询整合(数组对象)字段