当前位置: 首页> 教育> 高考 > 郑州前端培训机构_网站的营销策略_响应式网站模板的特点_百度投诉电话客服24小时

郑州前端培训机构_网站的营销策略_响应式网站模板的特点_百度投诉电话客服24小时

时间:2025/7/9 0:26:01来源:https://blog.csdn.net/Junmo12345/article/details/142487581 浏览次数:0次
郑州前端培训机构_网站的营销策略_响应式网站模板的特点_百度投诉电话客服24小时

博客昵称:沈小农学编程

作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟!

PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

题目难度:简单

默认优化目标:最小化时间复杂度。

Python默认为Python3。

目录

1 题目描述

2 题目解析

3 算法原理及代码实现

参考文献


1 题目描述

给定一种规律 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 中每个单词都被 单个空格 分隔

2 题目解析

输入是两个字符串pattern和s,pattern表示规律,s是字符串。输出是布尔值。约束条件是判断s是否符合规律pattern,是返回true,否返回false。

3 算法原理及代码实现

该题目等价于pattern中的单词和s中的单词一一对应,用空格来区分单词。我们创建两个哈希表str2ch和ch2str,用来记录这种对应关系。如果它们不是一一对应关系,返回false;否则返回true。

时间复杂度为O(n+m),n为pattern的长度,m为s的长度。空间复杂度为O(n+m)。

C++代码实现

class Solution {
public:bool wordPattern(string pattern, string s) {unordered_map<string, char> str2ch;unordered_map<char, string> ch2str;int i=0;int m=s.size();
​for(auto ch : pattern){if(i>=m){//i=0开始return false;}int j=i;while(j<m && s[j]!=' ') j++;const string &tmp=s.substr(i,j-i);//避免拷贝if(str2ch.count(tmp) && str2ch[tmp]!=ch){return false;}if(ch2str.count(ch) && ch2str[ch]!=tmp){return false;}str2ch[tmp]=ch;//哈希表赋值ch2str[ch]=tmp;i=j+1;}
​return i>=m;
​}
​
};

Python代码实现

class Solution:def wordPattern(self, pattern: str, s: str) -> bool:str2ch=dict()#用字典构建哈希表ch2str=dict()words=s.split()
​if(len(words)!=len(pattern)):return Falsefor word,ch in zip(words,pattern):#键值对if(word in str2ch and str2ch[word]!=ch or ch in ch2str and ch2str[ch]!=word):return Falsestr2ch[word]=chch2str[ch]=word
​return True

参考文献

力扣面试经典150题

力扣官方题解

关键字:郑州前端培训机构_网站的营销策略_响应式网站模板的特点_百度投诉电话客服24小时

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: