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

【力扣】面试经典150题——哈希表

文章目录

  • 383. 赎金信
  • 205. 同构字符串
  • 290. 单词规律


383. 赎金信

给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。

如果可以,返回 true ;否则返回 false 。

magazine 中的每个字符只能在 ransomNote 中使用一次。

class Solution {public boolean canConstruct(String ransomNote, String magazine) {if(ransomNote.length() > magazine.length()){return false;}int[] cnt = new int[26];for(char c : magazine.toCharArray()){cnt[c - 'a']++;}for(char c : ransomNote.toCharArray()){cnt[c - 'a']--;if(cnt[c - 'a'] < 0){return false;}}return true;}
}

205. 同构字符串

给定两个字符串 s 和 t ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

class Solution {public boolean isIsomorphic(String s, String t) {Map<Character, Character> s2t = new HashMap<Character, Character>();Map<Character, Character> t2s = new HashMap<Character, Character>();int len = s.length();for(int i = 0; i < len; i++){char x = s.charAt(i), y = t.charAt(i);if((s2t.containsKey(x) && s2t.get(x) != y) || (t2s.containsKey(y) && t2s.get(y) != x)){  //当字符重复时,查看由键所得的值是否匹配return false;}s2t.put(x, y);t2s.put(y, x);}return true;}
}

290. 单词规律

给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。

这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。

class Solution {public boolean wordPattern(String pattern, String str) {Map<String, Character> str2ch = new HashMap<String, Character>();Map<Character, String> ch2str = new HashMap<Character, String>();int m = str.length();int i = 0;for(int p = 0; p < pattern.length(); ++p){char ch = pattern.charAt(p);if(i >= m){return false;}int j = i;while(j < m && str.charAt(j) != ' '){j++;}String tmp = str.substring(i, j);if(str2ch.containsKey(tmp) && str2ch.get(tmp) != ch){return false;}if(ch2str.containsKey(ch) && !tmp.equals(ch2str.get(ch))){return false;}str2ch.put(tmp, ch);ch2str.put(ch, tmp);i = j + 1;}return i >= m;}
}

http://www.lryc.cn/news/222820.html

相关文章:

  • Python批量导入及导出项目中所安装的类库包到.txt文件(补充)
  • 2023 全栈工程师 Node.Js 服务器端 web 框架 Express.js 详细教程(更新中)
  • 【Leetcode】【数据结构】【C语言】判断两个链表是否相交并返回交点地址
  • Selenium爬取内容并存储至MySQL数据库
  • 蓝桥等考C++组别六级 007
  • 集合框架:Set集合的特点、HashSet集合的底层原理、哈希表、实现去重复
  • 【T690 之十二】基于方寸EVB2开发板(T690芯片)构建基于GMSSL的文件系统的方式
  • 使用Selenium发邮件附件
  • 公共数据这座金矿,授权运营为何是赋能的关键路径?
  • 昇腾CANN 7.0 黑科技:大模型推理部署技术解密
  • OAuth 2.0
  • 7个设计师必备的Figma汉化插件,高效设计超简单!
  • 缓存-基础理论和Guava Cache介绍
  • 机器人伺服驱动控制环
  • 单链表(3)
  • Android14前台服务适配指南
  • Spring Boot中使用Spring Data JPA访问MySQL
  • Go 语言函数闭包(匿名函数)
  • 2023年11月编程语言流行度排名
  • apache-maven-3.6.3 安装配置教程
  • 你一般什么时候使用GPT
  • kubernetes (k8s)的使用
  • RK3568平台开发系列讲解(音视频篇)RTMP 推流
  • 掌握这几个技巧,才敢称为Jenkins大神!
  • 帷幄内容管理系统:从立人设、做内容到定向投流,品牌 KOS 体系打造「百万导购」
  • 5.vue3项目(五):实现顶部导航栏功能:导航栏静态搭建,菜单折叠功能实现,面包屑动态展示路径,刷新页面功能,全屏功能
  • unittest 统计测试执行case总数,成功数量,失败数量,输出至文件,生成一个简易的html报告带饼图
  • 推荐一款功能强大的在线文件预览工具-kkFileView
  • 【Linux】磁盘阵列,了解不同raid的特点
  • Go 语言初探:从基础到实战