[Leetcode] 第290题 单词模式
2024-09-01 07:09:48
一、题目描述
给定一种 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;
}
};
最新文章
- Menu与ActionBar的爱恨情仇
- SQL 联合查询 + XML解析
- SQL Server 2012 实现分页新语法
- 网站添加数据出错,原来是MS SQL Server2008日志文件占据空间过大导致的
- 初识Flask
- LCM兼容
- ALAssets的两种用法
- http server 下载地址
- 查找jar包的站点
- LVS的调度算法分析
- Windows 8 应用开发 - 挂起与恢复
- BZOJ 3362 POJ 1984 Navigation Nightmare 并与正确集中检查
- NIC Bonding: 2 nic port as 1 interface
- 发布到ASP.NET CORE项目到 Windows server 2012
- quart-process_bar
- Mybatis_2.基于XML的增删改查
- MinHook 分析01 (x86的jmp+offset类型hook)
- D - Windows Message Queue
- CSS中的偏僻知识点
- ASP.NET AJAX入门系列(6):UpdateProgress控件简单介绍