【面试经典150 | 哈希表】单词规律

文章目录

  • 写在前面
  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:哈希表
  • 写在最后

写在前面

本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……

专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:

  • Tag:介绍本题牵涉到的知识点、数据结构;
  • 题目来源:贴上题目的链接,方便大家查找题目并完成练习;
  • 题目解读:复述题目(确保自己真的理解题目意思),并强调一些题目重点信息;
  • 解题思路:介绍一些解题思路,每种解题思路包括思路讲解、实现代码以及复杂度分析;
  • 知识回忆:针对今天介绍的题目中的重点内容、数据结构进行回顾总结。

Tag

【哈希表】【字符串】


题目来源

面试经典150 | 290. 单词规律


题目解读

该题目与 面试经典150 | 205. 同构字符串 如出一辙,只是其中的一个字符串变成了英文单词字符和空格组成的。


解题思路

方法一:哈希表

解决本题的思路依旧是 面试经典150 | 205. 同构字符串 中的解题思路,本题只是多了一步先从字符串 s 中根据空格分隔字符,然后将分隔后的字符存入哈希表中。

如何根据空格来分割字符串,这是字符串的基础操作了。

维护一个字符串 str 来存放当前的字符,维护一个字符串数组 vStr 来存放分割出来的字符串。我们遍历字符串 s,在没遇到空格或者到达字符结尾时,我们就累加当前的字符到 str 上,一旦遇到了空格或者达到的字符串结尾,就将 str 存放到 vStr 中,并更新 str = "",我们遍历完字符串 s 分割任务也就完成了。

实现代码

class Solution {
public:bool wordPattern(string pattern, string s) {int i;s += '-';vector<string> vStr;string str;for(i = 0; i < s.size(); ++i) {if(isspace(s[i]) || s[i] == '-') {vStr.push_back(str);str.clear();}else {str += s[i];}}unordered_map<char, int> chIdx, strIdx;int n = pattern.size();int m = vStr.size();if(m != n) {return false;}for(i = 0; i < n; ++i) {chIdx[pattern[i]] = i;strIdx[vStr[i]] = i;}for(i = 0; i < n; ++i) {if(chIdx[pattern[i]] != strIdx[vStr[i]]) {return false;}}return true;}
};

复杂度分析

时间复杂度: O ( n ) O(n) O(n) n n n 为字符串 pattern 的长度。

空间复杂度: O ( n ) O(n) O(n)


写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/158840.html

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

相关文章

2023年建筑电工(建筑特殊工种)证考试题库及建筑电工(建筑特殊工种)试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年建筑电工(建筑特殊工种)证考试题库及建筑电工(建筑特殊工种)试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人…

【从零开始学习Redis | 第二篇】Redis中的数据类型和相关命令

前言&#xff1a; Redis是一种快速、高效的开源内存数据库&#xff0c;被广泛用于构建各种类型的应用程序。其被设计成支持多种数据类型&#xff0c;这使得Redis在处理各种场景的数据存储和操作中非常灵活。Redis的数据类型提供了对不同数据结构的直接支持&#xff0c;包括字符…

第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气

第18篇ESP32platformio-arduino框架-ili9488-lcd显示时间天气 第18篇esp32ili9488lcd显示时间天气 连接方法&#xff1a; 修改WIFI&#xff1a; 关键代码 void setup() {Serial.begin(115200);WiFi.mode(WIFI_STA);WiFi.begin(ssid,password);Serial.print("\r\nConnect…

Java设计模式:Callback

介绍 回调&#xff08;Callback&#xff09;是一种设计模式&#xff0c;在这种模式中&#xff0c;一个可执行的代码被作为参数传递给其他代码&#xff0c;接收方的代码可以在适当的时候调用它。 在真实世界的例子中&#xff0c;当我们需要在任务完成时被通知时&#xff0c;我…

Qt工具开发,该不该跳槽?

Qt工具开发&#xff0c;该不该跳槽? 就这样吧&#xff0c;我怕你跳不动。 嵌入式UI&#xff0c;目前趋势是向着LVGL发展。QT已经在淘汰期了。很多项目还在用&#xff0c;但技术上已经落后。QT短期内不会全面淘汰&#xff0c;但退位让贤的大趋势已经很清楚了。 最近很多小伙伴…

springboot 志同道合交友网站演示

springboot 志同道合交友网站演示 liu1113625581

百度开放平台第三方代小程序开发,授权事件、消息与事件通知总结

大家好&#xff0c;我是小悟 关于百度开放平台第三方代小程序开发的两个事件接收推送通知&#xff0c;是开放平台代小程序实现业务的重要功能。 授权事件推送和消息与事件推送类型都以event的值判断。 授权事件推送通知 授权事件推送包括&#xff1a;推送票据、授权成功、取…

排序算法-希尔排序法(ShellSort)

排序算法-希尔排序法&#xff08;ShellSort&#xff09; 1、说明 我们知道当原始记录的键值大部分已排好序的情况下插入排序法非常有效&#xff0c;因为它不需要执行太多的数据搬移操作。希尔排序法是D.L.Shell在1959年7月发明的一种排序法&#xff0c;可以减少插入排序法中数…

微信小程序入门

目录 一.微信小程序简介 二. 什么是小程序&#xff1f; 三.小程序商城项目案例 四.小程序之入门案例 json配置 wxml模板 wxss样式 js逻辑交互 测试结果 一.微信小程序简介 微信小程序是一种运行在微信客户端内的应用程序&#xff0c;它以小巧、轻量、便捷的特点受到广…

androidx.appcompat.widget.Toolbar最右边设置控件不能仅靠最右边

androidx.appcompat.widget.Toolbar最右边设置控件不能仅靠最右边 Android Toolbar左、中、右对齐-CSDN博客&#xfeff;&#xfeff;Android Toolbar左、中、右对齐默认的Android Toolbar中添加子元素view是从左到右依次添加。需要注意的是&#xff0c;Android Toolbar为自身的…

推荐几款简单易用的协作化项目管理工具

您是否正在寻找一种有效且简单的项目管理工具来帮助您与团队成员协作?项目管理工具在当今的商业世界中已经变得必不可少&#xff0c;因为它们帮助团队保持组织和生产力。找到合适的工具是困难的&#xff0c;因为有太多的选择。有些工具是为特定类型的项目设计的&#xff0c;而…

腾讯云国际站-阿里云OSS如何迁移到腾讯云COS?腾讯云cos迁移教程

下面小编将介绍当源对象存储部署在阿里云国际版OSS 时&#xff0c;如何配置全托管迁移任务和半托管迁移任务&#xff0c;实现顺利迁移数据至腾讯云国际版COS。 准备工作 阿里云对象存储 OSS 创建 RAM 子账号并授予相关权限&#xff1a; 登录 RAM 控制台。选择人员管理 > …

二分查找:如何用最省内存的方式实现快速查找功能?

文章来源于极客时间前google工程师−王争专栏。 有序数据集合的查找算法&#xff1a;二分查找(Binary Search)算法&#xff0c;也叫折半查找算法。二分查找的思想非常简单&#xff0c;但是难掌握好&#xff0c;灵活运用更加困难。 问题&#xff1a;假设有1000万个整数数据&…

S32K1xx的MBD工具箱加载及激活

1、安装Matlab&#xff0c;本次使用Matlab2022b 2、打开Matlab&#xff0c;加载含有MBD工具的目录&#xff0c;如下 3、双击第一个---安装&#xff0c;正常安装就可以 4、双击第二个---安装&#xff0c;正常安装就可以 5、找到MBD的安装位置如下 C:\Users\Administrator\App…

应用在汽车发动机温度检测中的高精度温度传感芯片

汽车发动机是为汽车提供动力的装置&#xff0c;是汽车的心脏&#xff0c;决定着汽车的动力性、经济性、稳定性和环保性。根据动力来源不同&#xff0c;汽车发动机可分为柴油发动机、汽油发动机、电动汽车电动机以及混合动力等。 常见的车用温度传感器有进气温度传感器、变速器…

C++智能指针(三)——unique_ptr初探

与共享指针shared_ptr用于共享对象的目的不同&#xff0c;unique_ptr是用于独享对象。 文章目录 1. unqiue_ptr的目的2. 使用 unique_ptr2.1 初始化 unique_ptr2.2 访问数据2.3 作为类的成员2.4 处理数组 3. 转移所有权3.1 简单语法3.2 函数间转移所有权3.2.1 转移至函数体内3.…

Puppeteer实现上下滚动、打开新Tab、用户数据保存(三)

Puppeteer实现上下滚动、打开新Tab、用户数据保存&#xff08;三&#xff09; Puppeteer实现上下滚动、打开新Tab、用户数据保存&#xff08;三&#xff09;一、实现上下滚动二、打开新Tab三、用户数据保存四、效果演示 一、实现上下滚动 在自动化测试中&#xff0c;我们需要能…

Blender:使用立方体制作动漫头像

好久没水文章 排名都掉到1w外了 ~_~ 学习一下blender&#xff0c;看能不能学习一点曲面变形的思路 一些快捷键 ctrl 空格&#xff1a;区域最大化&#xff0c;就是全屏 ctrl alt 空格&#xff1a;也是区域最大化 shift b&#xff1a;框选区域然后最大化显示该范围 shift 空…

XGBoost+LR融合

1、背景简介 xgboostlr模型融合方法用于分类或者回归的思想最早由facebook在广告ctr预测中提出&#xff0c;其论文Practical Lessons from Predicting Clicks on Ads at Facebook有对其进行阐述。在这篇论文中他们提出了一种将xgboost作为feature transform的方法。大概的思想…

函数栈帧的创建与销毁(保姆级讲解)

局部变量是怎么创建的? 在为main函数开辟栈帧空间时&#xff0c;在一定范围内初始化成0CCCCC&#xff0c;再把里面0CCCC的一些开辟空间给局部变量使用。 为什么局部变量的值是随机值? 因为我们在为main函数开辟栈帧空间时&#xff0c;会将一定范围内空间初始成0CCCCCC里面…