【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.hqwc.cn/news/95507.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++代码】用栈实现队列,用队列实现栈--代码随想录

队列是先进先出&#xff0c;栈是先进后出。卡哥给了关于C方向关于栈和队列的4个问题&#xff1a; C中stack 是容器么&#xff1f; 使用的stack是属于哪个版本的STL&#xff1f; 使用的STL中stack是如何实现的&#xff1f; stack 提供迭代器来遍历stack空间么&#xff1f; …

泥石流山体滑坡监控视觉识别检测算法

泥石流山体滑坡监控视觉识别检测算法通过yolov8python深度学习框架模型&#xff0c;泥石流山体滑坡监控视觉识别检测算法识别到泥石流及山体滑坡灾害事件的发生&#xff0c;算法会立即进行图像抓拍&#xff0c;并及时进行预警。Yolo的源码是用C实现的&#xff0c;但是好在Githu…

C++ struct 笔记(超级详细)

今日碎碎念&#xff1a;我在学C语言时经常用到结构体struct&#xff0c;之后在写C程序时遇到在struct中定义构造函数和成员函数的情况&#xff0c;这在c语言中是从未遇到过的&#xff0c;觉得奇怪&#xff0c;想到之前并没有真正系统学习C里的struct&#xff0c;有必要今天详细…

spring cloud、gradle、父子项目、微服务框架搭建---spring secuity oauth2、mysql 授权(九)

文章目录 一、二、授权服务2.1 初始化表结构2.2 引入依赖2.3 自定义 用户详情类 UserDetailsService2.4 授权配置 AuthorizationServerConfiguration2.5 Web安全配置 WebSecurityConfiguration2.6 默认生成接口 三、资源服务3.1 引入依赖3.2 资源服务 ResourceServerConfig 四、…

大数据组件-Flume集群环境的启动与验证

&#x1f947;&#x1f947;【大数据学习记录篇】-持续更新中~&#x1f947;&#x1f947; 个人主页&#xff1a;beixi 本文章收录于专栏&#xff08;点击传送&#xff09;&#xff1a;【大数据学习】 &#x1f493;&#x1f493;持续更新中&#xff0c;感谢各位前辈朋友们支持…

Java object类

一、JDK类库的根类:obiect 1、这个类中的方法都是所有子类通用的。任何一个类默认继承object。就算没有直接继承&#xff0c;最终也会间接继承。 2、obiect类当中有哪些常用的方法?我们去哪里找这些方法呢? 第一种方法:去源代码当中。(但是这种方式比较麻烦&#xff0c;源代…

【从0学习Solidity】合约入门 Hello Web3

【学习Solidity的基础】入门智能合约开发 Hello Web3 &#x1f4f1;不写代码没饭吃上架主页 在强者的眼中&#xff0c;没有最好&#xff0c;只有更好。我们是全栈开发领域的优质创作者&#xff0c;同时也是阿里云专家博主。 ✨ 关注我们的主页&#xff0c;探索全栈开发的无限…

【SQL】关系模型与查询和更新数据

一、关系模型 1.1 主键 主键是关系表中记录的唯一标识。主键的选取非常重要&#xff1a;主键不要带有业务含义&#xff0c;而应该使用BIGINT自增或者GUID类型。主键也不应该允许NULL。 可以使用多个列作为联合主键&#xff0c;但联合主键并不常用。 1.2 外键 FOREIGN KEY …

Compose学习 - 环境配置及compose、kotlin插件、gradle、AndroidStudio版本对应关系

最近学习Compose&#xff0c;一开始学习的Compose版本是1.1.1&#xff0c;学习的过程中发现&#xff0c; LazyHorizontalGrid这个方法只有在1.2.0以后版本才支持。 想着既然要升级&#xff0c;直接用最新的好了。后面按照官网建议&#xff0c;下载了最新的AndroidStudio&#…

设计模式-7--代理模式(Proxy Pattern)

一、什么是代理模式&#xff08;Proxy Pattern&#xff09; 代理模式&#xff08;Proxy Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许一个对象&#xff08;代理&#xff09;充当另一个对象&#xff08;真实对象&#xff09;的接口&#xff0c;以控制对该对象的…

如何飞速成为开源贡献者(Contributor)

如何飞速成为开源贡献者Contributor 一、环境信息1.1 硬件信息1.2 软件信息 二、Git安装2.1 Git介绍2.2 Git下载安装 三、开源项目选定四、GitHub参与开源流程4.1 Fork项目4.2 SSH配置4.2.1 为什么要配置SSH4.2.2 如何配置SSH 4.3 Clone项目4.4 IDEA关联4.5 PR生成4.6 PR提交 一…

SpringCloud入门实战(十五)分布式事务框架Seata简介

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…