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

【LeetCode】290. 单词规律

这里写自定义目录标题

  • 2023-8-30 09:34:23

290. 单词规律

2023-8-30 09:34:23

这道题目,我是根据 205. 同构字符串
的思路一样,都转化为另外一个第三方的字符串,在比较翻译过后的语句是不是一样的。


class Solution {public boolean wordPattern(String pattern, String s) {String[] s1 = s.split(" ");return helper1(pattern).equals(helper2(s1));}private String helper1(String str){int[] temp = new int[26];StringBuilder result = new StringBuilder();for(int i = 0; i < str.length(); i++){int c = str.charAt(i) - 'a';if(temp[c] == 0){temp[c] = i + 1;}result.append(temp[c]);}return result.toString();}private String helper2( String[] s1){Map<String, Integer> map =  new HashMap<String, Integer>();StringBuilder result = new StringBuilder();for(int i = 0 ; i < s1.length; i++){if(!map.containsKey(s1[i])){map.put(s1[i], i +1);}result.append(map.get(s1[i]));}return result.toString();}
}

在这里插入图片描述

看看官方的解法:

class Solution {// public boolean isIsomorphic(String s, String t) {//     return isIsomorphicHelper(s).equals(isIsomorphicHelper(t));// }public boolean wordPattern(String pattern, String str) {String[] words = str.split(" ");//字符和单词是互相映射,数量必须相等if (words.length != pattern.length()) {return false;}Map<Object, Integer> map = new HashMap<>();for (Integer i = 0; i < words.length; i++) {/*如果key不存在,插入成功,返回null;如果key存在,返回之前对应的value。以pattern = "abba", str = "dog cat cat dog"为例,第1次:map.put('a',0)返回null,map.put("dog",0)返回null,两者相等;第2次:map.put('b',1)返回null,map.put("cat",1)返回null,两者相等;第3次:map.put('b',2)返回1,map.put("cat",2)返回1,两者相等;第4次:map.put('a',3)返回0,map.put("dog",3)返回0,两者相等,结果为 true。以pattern = "abba", str = "dog cat cat fish"为例,第1次:map.put('a',0)返回null,map.put("dog",0)返回null,两者相等;第2次:map.put('b',1)返回null,map.put("cat",1)返回null,两者相等;第3次:map.put('b',2)返回1,map.put("cat",2)返回1,两者相等;第4次:map.put('a',3)返回0,map.put("fish",3)返回null,两者不相等,结果为 false。*//** 为什么 Integer 在这里用的是 != 进行判断 ?* 1. 会返回null值,如果用equals进行判断,会产生空指针异常* 2. 理想状态的就是 Integer 的值在 0 - 25 之间进行判断,这一部分也是程序上需要返回true的情况*/if (map.put(pattern.charAt(i), i) != map.put(words[i], i)) {return false;}}return true;}
}    
http://www.lryc.cn/news/147140.html

相关文章:

  • 研磨设计模式day12迭代器模式
  • Python3不支持sqlite3的解决方法
  • Qt应用开发(基础篇)——消息对话框 QMessageBox
  • ETC reset
  • 2023年8月30日-[SWPUCTF 2021 新生赛]jicao
  • MariaDB数据库服务器
  • Nat. Mach. Intell 2023 | DrugBAN+:域自适应的可解释双线性插值网络改进药物-靶标预测(DTI)
  • org.springframework.web.reactive.function.server.ServerResponse设置响应头
  • 高频面试题:如何分别用三种姿势实现三个线程交替打印0到100
  • 【git】Idea撤回本地分支、或远程分支提交记录的各种实际场景操作步骤
  • FPGA SPI 驱动程序
  • 【实战】十一、看板页面及任务组页面开发(五) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(二十七)
  • mac m1 docker 安装kafka和zookeeper
  • 宏观经济和风电预测误差分析(Matlab代码实现)
  • GO学习之 搜索引擎(ElasticSearch)
  • Sentinel —实时监控
  • 接口优化通用方案
  • 用Visual Studio 2022的.map文件来查看C++变量在内存中的布局情况
  • 使用代理突破浏览器IP限制
  • HuggingFace中的 Files and versions 如何优雅下载到本地?(Python requests,tqdm)
  • 三、原型模式
  • transformer实现词性标注
  • Java中异或操作和OTP算法
  • K8S最新版本集群部署(v1.28) + 容器引擎Docker部署(下)
  • 女子垒球运动的发展·垒球1号位
  • Debian 30 周年,生日快乐!
  • 字符串匹配的Rabin–Karp算法
  • 傅里叶变换(FFT)笔记存档
  • ELK安装、部署、调试 (二) ES的安装部署
  • Android 13 - Media框架(8)- MediaExtractor