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

290. 单词规律【 力扣(LeetCode) 】

一、题目描述

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

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

二、测试用例

示例1:

输入: pattern = "abba", s = "dog cat cat dog"
输出: true

示例 2:

输入:pattern = "abba", s = "dog cat cat fish"
输出: false

示例 3:

输入: pattern = "aaaa", s = "dog cat cat dog"
输出: false

提示:

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

三、解题思路

  1. 基本思路:
      建立字符串 s 和 pattern 的双向映射并检查是否冲突
  2. 具体思路:
    • 拆分:先将字符串 s 按空格拆分成单词。
    • 建立映射并检查冲突:遍历字符串 pattern,如果不存在 字符串 s 和 pattern 的映射,则建立字符串 s 和 pattern 的双向映射;如果存在,则检查是否冲突。

四、参考代码

时间复杂度: O ( n + m ) \Omicron(n+m) O(n+m) 【字符串 s 和 pattern 都要遍历一遍】
空间复杂度: O ( n + m ) \Omicron(n+m) O(n+m) 【最坏情况下要把字符串 s 和 pattern 全部存进 map 中】

class Solution {
public:vector<string> split(string s, char t) {int n = s.length(), i, j;vector<string> ans;for (i = 0, j = 0; j < n; j++) {if (s[j] == t) {ans.push_back(s.substr(i, j - i));i = j + 1;}}ans.push_back(s.substr(i, j - i));return ans;}bool wordPattern(string pattern, string s) {int n = pattern.length();vector<string> str = split(s, ' ');if (str.size() != n)return false;map<char, string> m1;map<string, char> m2;for (int i = 0; i < n; i++) {if (m1.count(pattern[i]) == 1 || m2.count(str[i]) == 1) {if (m1[pattern[i]] != str[i] || m2[str[i]] != pattern[i])return false;} else {m1[pattern[i]] = str[i];m2[str[i]] = pattern[i];}}return true;}
};

http://www.mrgr.cn/news/13289.html

相关文章:

  • RAG与LLM原理及实践(14)---- Python + MinIO + Kafka进阶
  • 在英伟达,你既能成为百万富翁,也能被“折磨”
  • bash 脚本的执行方式
  • MATLAB 低版本Matlab-读取LAS格式点云文件并可视化(78)
  • 功能测试常用的测试用例大全
  • Java设计模式之原型模式详细讲解和案例示范
  • 开发日志:表单解析 LeipiFormDesign
  • 【openpyxl-驯化】一文搞懂python是如何将文本、图片写入到execl中的技巧
  • 嵌入式学习day34
  • 【奇某信-注册/登录安全分析报告】
  • 数据实体类主键使用UUID生成策略
  • 每日刷力扣SQL题(七)
  • iPhone不停重启怎么办?全面解析与解决方案
  • 【html+css 绚丽Loading】000022 三元循环轮
  • 软件开发最佳实践:接口设计、自测与效率提升
  • Spring 源码解读:逐步实现 IoC 容器,深入理解 Spring 核心原理
  • 你知道有哪些Spring MVC扩展点可以解析接口参数和处理返回值吗?
  • 笔试算法—编程练习-01-H-24
  • C++实现的活动安排问题
  • 实际项目中Gson的用法,解析对象嵌套list对象的问题