一、题目描述

给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式。

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

示例1:

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

示例 2:

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

示例 3:

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

示例 4:

输入: pattern = "abba", str = "dog dog dog dog"
输出: false

二、题目分析

题目比较简单,注意两点

1)需要建立字母和单词一一对应的关系

2)注意用空格分割字符串的时候,最后一个单词后面没有空格

三、代码

 class Solution {
public:
bool wordPattern(string pattern, string str) {
if (pattern == "")return false;
map<char, string>mp1;
map<string, char>mp2;//一一对应
vector<string>vs;
int i;
string s = "";
for (i = ; i < str.size(); ++i) {
if (str[i] == ' ') {
if (s != "")vs.push_back(s);
s = "";
}
else s += str[i];
}
if (s != "")vs.push_back(s);//注意最后一个单词
if (pattern.size() != vs.size())return false;
for (i = ; i < pattern.size(); ++i) {
cout << vs[i] << " ";
if (mp1.find(pattern[i]) != mp1.end()) {
if (mp1[pattern[i]] != vs[i])return false;
}
else mp1[pattern[i]] = vs[i];
if (mp2.find(vs[i]) != mp2.end()) {
if (mp2[vs[i]] != pattern[i])return false;
}
else mp2[vs[i]] = pattern[i];
}
return true;
}
};

最新文章

  1. Menu与ActionBar的爱恨情仇
  2. SQL 联合查询 + XML解析
  3. SQL Server 2012 实现分页新语法
  4. 网站添加数据出错,原来是MS SQL Server2008日志文件占据空间过大导致的
  5. 初识Flask
  6. LCM兼容
  7. ALAssets的两种用法
  8. http server 下载地址
  9. 查找jar包的站点
  10. LVS的调度算法分析
  11. Windows 8 应用开发 - 挂起与恢复
  12. BZOJ 3362 POJ 1984 Navigation Nightmare 并与正确集中检查
  13. NIC Bonding: 2 nic port as 1 interface
  14. 发布到ASP.NET CORE项目到 Windows server 2012
  15. quart-process_bar
  16. Mybatis_2.基于XML的增删改查
  17. MinHook 分析01 (x86的jmp+offset类型hook)
  18. D - Windows Message Queue
  19. CSS中的偏僻知识点
  20. ASP.NET AJAX入门系列(6):UpdateProgress控件简单介绍

热门文章

  1. 提交中文数据乱码问题---web.xml
  2. Spring学习之旅(五)--AOP
  3. 面试必备:常考Java基础知识总结(持续更新)
  4. HTTP首部字段完全解析
  5. Super和This总结
  6. vue实现对语言的切换,结合vue-il8n。
  7. 海量数据搜索---demo展示百度、谷歌搜索引擎的实现
  8. CF1097D Makoto and a Blackboard 质因数分解 DP
  9. Codeforces 898 B(拓展欧几里得)
  10. css 元素实际宽高