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

LeetCode150道面试经典题--单词规律(简单)

1.题目

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

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

2.示例

pattern="abba"

s = "cat dog dog cat"

返回 true

pattern="abba"

s = "cat pig dog cat"

返回 false

pattern="ab"

s = "cat cat"

返回 false

提示

  • 1 <= pattern.length <= 300
  • pattern 只包含小写英文字母
  • 1 <= s.length <= 3000
  • s 只包含小写英文字母和 ' '
  • s 不包含 任何前导或尾随对空格
  • s 中每个单词都被 单个空格 分隔

3.思路

哈希表:

        首先看到映射相关问题就得联想到哈希表,然后先分析特殊情况,比如s为空或者s里面的字母个数和pattern的个数不匹配则直接返回false,否则正常情况下,先将s通过spilt方法进行切割后,在遍历s情况下,不存在的键值对应的映射就存入哈希表中,存在的就比较是否相等即可。

如果不了解哈希表则可以通过以下内容了解相关知识

Java类集框架(二)_Alphamilk的博客-CSDN博客

4.代码

LeetCode代码:

使用时间优先代码:

class Solution {public boolean wordPattern(String pattern, String s) {
//        判断两种特殊情况if (s.length() ==0){return false;}String ss[] = s.split(" ");if (ss.length != pattern.length()){return false;}//        正常情况HashMap<Character,String> map = new HashMap<>();for (int i= 0;i<pattern.length();i++){if (!map.containsKey(pattern.charAt(i))){if (map.containsValue(ss[i])){return false;}map.put(pattern.charAt(i),ss[i]);}else {if (!map.get(pattern.charAt(i)).equals(ss[i])){return false;}}}return true;}
}

还有一种做法是通过构造两个哈希表实现,内存上稍微会优于该算法,但是时间上会慢一些。

案例详细代码:

package LeetCode14;import java.util.Arrays;
import java.util.HashMap;public class javaDemo {public static void main(String[] args) {String pattern = "abbc";String s = "";boolean flag = true;//        判断两种特殊情况
//        当s为空if (s.length() ==0){flag = false;}
//        当ss中单词个数与pattern个数不匹配情况String ss[] = s.split(" ");if (ss.length != pattern.length()){flag = false;}//        正常情况HashMap<Character,String> map = new HashMap<>();
//        遍历整个patternfor (int i= 0;i<pattern.length();i++){
//            判断是否存在键值if (!map.containsKey(pattern.charAt(i))){
//                判断值是否已经对应其他键值if (map.containsValue(ss[i])){flag = false;break;}
//              不满足前面条件的话就正常放入map.put(pattern.charAt(i),ss[i]);}else {
//                如果有存在的键,则进行比较if (!map.get(pattern.charAt(i)).equals(ss[i])){flag = false;break;}}}
//        输出flagSystem.out.println(flag);}
}

会了?试试挑战下一题!♪(^∀^●)ノシ (●´∀`)♪ 

LeetCode150道面试经典题-- 有效的字母异位词(简单)_Alphamilk的博客-CSDN博客

相关文章:

LeetCode150道面试经典题--单词规律(简单)

1.题目 给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&#xff0c; pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 2.示例 pattern"abba" s "c…...

uniapp把城市换成26个字母和城市排序

后端返回的数据 我们要得效果 <template><view><view v-for"(value,key) in cities" :key"key"><view style"color: red;"> {{ key }} </view><view style"border: 1rpx solid black;"><tex…...

Flv格式视频怎么转MP4?视频格式转换方法分享

FLV格式的视频是一种早期的视频格式&#xff0c;不支持更高的分辨率和比特率&#xff0c;这意味着视频的清晰度和质量受限制&#xff0c;无法很好地保留细节和质量&#xff0c;这种格式的视频已经逐渐被更高质量的视频格式所替代&#xff0c;例如MP4格式&#xff0c;不仅具有很…...

Java类与对象详解(3)

目录 封装 封装的概念 访问限定符 封装扩展之包 包的概念 导入包中的类 自定义包 基本规则 包的访问权限控制举例 常见的包 static 成员 static 修饰成员变量 static修饰成员方法 static 成员变量的初始化 代码块 代码块的概念及其分类 普通代码块 构造代码块…...

PMP备考指南来啦!

第一步&#xff1a;通读教材&#xff0c;了解学习内容 在正式开始课程的学习前&#xff0c;可以先快速简单地阅览一遍教材&#xff08;PMBOK&#xff09;&#xff0c;在较短的时间内知道自己将要学习的是什么内容&#xff1b;同时可以标记出难理解的知识点。这样做有以下两个好…...

计算机视觉中的特征检测和描述

一、说明 这篇文章是关于计算机视觉中特征检测和描述概念的简要理解。在其中&#xff0c;我们探讨了它们的定义、常用技术、简单的 python 实现和一些限制。 二、什么是特征检测和描述&#xff1f; 特征检测和描述是计算机视觉中的基本概念&#xff0c;在图像识别、对象跟踪和图…...

【docker】 运行bytetrack 构建映像失败 使用docker删除之前构建的映像

1 Docker删除docker build失败的images docker images | grep "<none>" | awk {print $3} | xargs docker rmi 2 Docker删除启动失败的image docker ps -a | awk {if (length($2) 12){print $1}} | xargs docker rm...

视图矩阵推导

线性代数知识背景 空间中对边向量相等的四边形是平行四边形 视图矩阵推导...

Linux | 隐藏终端并在指定路径下执行命令

文章目录 概述一、定义介绍二、操作教程(一)、编写脚本1.创建脚本2.编写代码(二)、执行脚本1.脚本执行2.自启动执行3.检查和杀死隐藏程序概述 本节详细介绍了如何在Ubuntu18系统下隐藏终端执行命令,同时可以指定命令执行路径。 一、定义介绍 隐藏终端启动其实很简单,只需要在…...

JavaSE_2.1——数组之Arrays工具类

Java提供了一个专门用于操作数组的工具类&#xff0c;即Arrays类&#xff0c;位于Java. util包下【需要导入】。该类提供了一系列方法来操作数组&#xff0c;例如排序、赋值、比较、填充数组 等&#xff0c;用户直接调用这些方法即可【例如&#xff1a;Arrays.sort(数组名)】&a…...

yolov5、YOLOv7、YOLOv8改进:注意力机制CA

目录 1.背景介绍 论文题目&#xff1a;《Coordinate Attention for Efficient Mobile NetWork Design》论文地址&#xff1a; https://arxiv.org/pdf/2103.02907.pdf 2.原理介绍 3.YOLOv5改进&#xff1a; 3.1common中加入下面代码 3.2在yolo.py中注册 3.3添加配置文件 …...

​LeetCode解法汇总617. 合并二叉树

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给你两棵二…...

记vite打包vue项目内存溢出问题解决

出现问题 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory解决方法一&#xff1a; 1.根据网上的资料是通过全局下载npm包increase-memory-limit&#xff1a; npm install -g increase-memory-limit2.在项目目录执…...

【SCI征稿】2区SCI,大数据与遥感技术、图像处理技术、物联网(IoT)技术、传感器网络的结合研究

期刊简介&#xff1a; 【出版社】Elsevier 【影响因子】IF&#xff08;2022&#xff09;&#xff1a;3.0-4.0 【期刊分区】JCR2区&#xff0c;中科院4区 【检索情况】SCIE 在检&#xff0c;正刊 【参考周期】期刊部系统内提交&#xff0c;预计3个月左右录用&#xff0c;走…...

java_基础语法及用法

文章目录 一、java基础1.1 JAVAEE的13个规范 二、java基础语法2.1 final2.2 static2.3 异常 三、java基础用法3.1 时间格式化3.2 java计时 一、java基础 1.1 JAVAEE的13个规范 JAVA EE的十三种规范 二、java基础语法 2.1 final 1.被final修饰的类不可以被继承 2.被final修…...

C# WPF 开源主题 HandyControl 的使用(一)

HandyControl是一套WPF控件库&#xff0c;它几乎重写了所有原生样式&#xff0c;同时包含80余款自定义控件&#xff08;正逐步增加&#xff09;&#xff0c;下面我们开始使用。 1、准备 1.1 创建项目 C# WPF应用(.NET Framework)创建项目 1.2 添加包 1.3 在App.xaml中引用…...

探索ES高可用:滴滴自研跨数据中心复制技术详解

Elasticsearch 是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎&#xff0c;其每个字段均可被索引&#xff0c;且能够横向扩展至数以百计的服务器存储以及处理TB级的数据&#xff0c;其可以在极短的时间内存储、搜索和分析大量的数据。 滴滴ES发展至今&#xf…...

指针---进阶篇(二)

指针---进阶篇&#xff08;二&#xff09; 前言一、函数指针1.抛砖引玉2.如何判断函数指针&#xff1f;&#xff08;方法总结&#xff09; 二、函数指针数组1.什么是函数指针数组&#xff1f;2.讲解函数指针数组3.模拟计算器&#xff1a;讲解函数指针数组 三、指向函数指针数组…...

Python实现SSA智能麻雀搜索算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法&#xff0c;在2020年提出&a…...

【go语言基础】结构体struct

主要是敲代码&#xff0c;敲的过程中会慢慢体会。 1.概念 结构体是用户定义的类型&#xff0c;表示若干字段的集合&#xff0c;目的是将数据整合在一起。 简单的说&#xff0c;类似Java中的实体类。存储某个实体属性的集合。 2.结构体声明 注意&#xff1a;结构体名字&…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

《Playwright:微软的自动化测试工具详解》

Playwright 简介:声明内容来自网络&#xff0c;将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具&#xff0c;支持 Chrome、Firefox、Safari 等主流浏览器&#xff0c;提供多语言 API&#xff08;Python、JavaScript、Java、.NET&#xff09;。它的特点包括&a…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

go 里面的指针

指针 在 Go 中&#xff0c;指针&#xff08;pointer&#xff09;是一个变量的内存地址&#xff0c;就像 C 语言那样&#xff1a; a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10&#xff0c;通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...

Kotlin REPL初探

文章目录 1. Kotlin REPL 简介2. 在命令行中玩Kotlin REPL2.1 下载Kotlin编译器压缩包2.2 安装配置Kotlin编译器2.3 启动Kotlin交互式环境2.4 在命令行玩Kotlin REPL 3. 在IDEA里玩Kotlin REPL3.1 打开Kotlin REPL窗口3.2 在Kotlin REPL窗口玩代码 4. Kotlin REPL 的优势 1. Ko…...