博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode-290-Word Pattern
阅读量:6527 次
发布时间:2019-06-24

本文共 1803 字,大约阅读时间需要 6 分钟。

题目描述:

Given a pattern and a string str, find if str follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

Examples:

  1. pattern = "abba", str = "dog cat cat dog" should return true.
  2. pattern = "abba", str = "dog cat cat fish" should return false.
  3. pattern = "aaaa", str = "dog cat cat dog" should return false.
  4. pattern = "abba", str = "dog dog dog dog" should return false.

 

Notes:

You may assume pattern contains only lowercase letters, and str contains lowercase letters separated by a single space.

 

要完成的函数:

bool wordPattern(string pattern, string str) 

 

说明:

1、这道题目是之前char-char的升级版,现在是char-string。要求不变,仍然是不能两个相同的字母对应一个string,不能两个相同的string对应一个字母。仿照之前思路,很容易构造出代码。

2、这道题目还要注意有可能pattern里面的字母个数和string里面的单词个数不匹配,边界条件处理一下就好了。

代码如下:

bool wordPattern(string pattern, string str)     {        map
m1; map
m2; int j=0; string str1="";//存储str中切分出来的单词 for(int i=0;i
str.size())//如果pattern的字母多于str中的单词 return false; while(str[j]!=' '&&str[j]!='\0')//碰到空格和str末尾的'\0'就停下 { str1+=str[j]; j++; } j++; //j设置为下一个单词首字母的index if(m1[pattern[i]]=="")     m1[pattern[i]]=str1; else { if(m1[pattern[i]]!=str1) return false; } if(!m2[str1])     m2[str1]=pattern[i]; else { if(m2[str1]!=pattern[i]) return false; } } if(j

m1是用来防止“aa”和“dog cat”这种一个字母对应两个不同单词的情况。m2则是用来防止“ab”和“dog dog”这种两个字母对应同一个单词的情况。

上述代码实测2ms,beats 100% of cpp submissions。

转载于:https://www.cnblogs.com/chenjx85/p/8847717.html

你可能感兴趣的文章
Css定位-定位
查看>>
sort,uniq命令
查看>>
am335x 电容屏驱动添加。
查看>>
JavaScript Unicode字符操作
查看>>
rhel-server-7.2-x86_64无法联网(VMware环境)
查看>>
Nginx配置中的log_format用法梳理(设置详细的日志格式)
查看>>
Atitit 软件工程概览attilax总结
查看>>
优化LibreOffice如此简单
查看>>
【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】
查看>>
秒杀系统设计方案
查看>>
3D印花芭蕾舞鞋为舞者科学地保护双脚
查看>>
冲浪科技获Ventech China数百万美元天使轮融资,发力自动驾驶行业
查看>>
通过ActionTrail监控AccessKey的使用
查看>>
从 JavaScript 到 TypeScript
查看>>
一个mysql复制中断的案例
查看>>
【最佳实践】OSS开源工具ossutil-大文件断点续传
查看>>
Linux常用的服务器构建
查看>>
深入了解 Weex
查看>>
Android第三方开源FloatingActionButton(com.getbase.floatingactionbutton)【1】
查看>>
【75位联合作者Nature重磅】AI药神:机器学习模型有望提前五年预测白血病!
查看>>