程序地带

【力扣】290. 单词规律 ---- 哈希表(双向映射)


290 单词规律 给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。
示例1:
输入: pattern = "abba", str = "dog cat cat dog"
输出: true
示例 2:
输入:pattern = "abba", str = "dog dog dog dog"
输出: false

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/word-pattern


解题思路:哈希表,双向映射,双指针遍历规律与给定字符串,将字母与字符串一一对应起来,当长度不对应或者映射关系不同时,则返回false。


class Solution {
public:
bool wordPattern(string pattern, string s) {
unordered_map<char,string> ch2str;
unordered_map<string,char> str2ch;
int i =0;
//cout<<s.size()<<endl;
for(auto ch:pattern){
//cout<<ch<<endl;
if(i>= s.size()) return false;
int j =i;
while(j<s.size() && s[j]!=' ') ++j;
string sub_s = s.substr(i,j-i);
//cout<< sub_s<<endl;
if(ch2str.find(ch)!= ch2str.end() && ch2str[ch]!= sub_s)
return false;
if(str2ch.count(sub_s) && str2ch[sub_s]!= ch)
return false;
ch2str[ch] = sub_s;
str2ch[sub_s] =ch;
i = j+1;
}
cout<<i<<endl;
return i>s.size();
}
};
class Solution:
def wordPattern(self, pattern: str, s: str) -> bool:
ch2str = dict()
str2ch = dict()
words = s.split(' ')
print(words)
i = 0
for ch in pattern:
if i>= len(words): return False
if ch in ch2str and ch2str[ch] != words[i]: return False
if words[i] in str2ch and str2ch[words[i]] != ch: return False
ch2str[ch] = words[i]
str2ch[words[i]] = ch
i +=1
return i>= len(words)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42281215/article/details/111246212

随机推荐

Parcel【零配置的前端打包工具】

Parcel配置yarninityarnaddparcel-bundler--dev 支持自动安装插件支持各种文件导入支持动态导入,拆分代码生茶模式打包yarnparcel-builds...

Daisy__yangyang 阅读(595)

pytorch adagrad_PyTorch中的优化算法

常见的优化算法:梯度下降及其改进、牛顿法及其改进的理论已经做了总结,可以查看前面的文章。Pytorch中对这些优化算法进行了封装,在torch.optim模块...

weixin_39652869 阅读(277)

使用Arduino开发板连接模拟pH传感器

在化学中,pH是用于指定水基溶液的酸性或碱性的标度。酸性溶液的pH值较低,而碱性溶液的pH值较高。因此,Ph传感器具有确定任何溶液的Ph的能力,...

woshi_ziyu 阅读(495)

ios thymeleaf回显下拉框数据不生效

学习目标:开发中我们可能会遇到回显后台传过来的数据,最近遇到的问题有:下拉框在pc端,安卓端能成功回显数据ios却不行,解决方法&...

Distance_123 阅读(267)

pytorch argmax_TensorFlow vs. Pytorch

TensorFlow和pytorch是目前两个比较受欢迎的深度学习框架,二者都被广泛地应用在业界和学术领域。本文对二者进行简单的梳理对比。TensorFlow由Google开发ÿ...

weixin_39529463 阅读(953)

gitlab用户、用户组、项目之间的关系(二)

1.gitlab用户、用户组、项目之间的关系1.1.用户、用户组、项目之间的关系在公司环境创建的项目对外都是私有的,很少有公开的项目一个私有项目只允许一个用户组进行访问,一...

Jiangxl~ 阅读(907)

2021-01-25 JAVA基础

2021-01-25 JAVA基础

JAVA基础操作符1.算术操作符基本:+-*/%(余)自增自减++–inti=1;打印i++//i++等于1,先使用,再赋值打印i//i...

姚昂之~ 阅读(756)