[leetcode] 290. Word Pattern 解题报告
来源:互联网 发布:mac os xlion200个小时 编辑:程序博客网 时间:2024/05/16 16:55
题目链接:https://leetcode.com/problems/word-pattern/
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:
- pattern =
"abba"
, str ="dog cat cat dog"
should return true. - pattern =
"abba"
, str ="dog cat cat fish"
should return false. - pattern =
"aaaa"
, str ="dog cat cat dog"
should return false. - 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.
思路:一个字母对应一个字符串, 同时一个字符串也要对应一个字符, 这样我们可以同时用两个hash表来检测是否同时匹配. 还有需要注意的是模式串和匹配串长度不一致的问题.
代码如下:
class Solution {public: bool wordPattern(string pattern, string str) { str += " "; int i = 0, j = 0, len1 = pattern.size(), len2=str.size(); unordered_map<char, string> hash1; unordered_map<string, char> hash2; while(i < len1 && j < len2) { int pos = str.find(' ', j); string s = str.substr(j, pos-j); if(hash1.count(pattern[i]) && hash1[pattern[i]]!=s) return false; if(hash2.count(s) && hash2[s]!= pattern[i]) return false; hash1[pattern[i]] = s, hash2[s] = pattern[i]; i++, j = pos+1; } return i==len1 && j ==len2; }};
class Solution {public: bool wordPattern(string pattern, string str) { unordered_map<string, char> hash1; unordered_map<char, string> hash2; istringstream is(str); for(auto ch: pattern) { if(is.eof()) return false; string s; is >> s; if(!hash1.count(s) && !hash2.count(ch)) { hash1[s] = ch, hash2[ch] = s; continue; } if(hash1.count(s) && hash2.count(ch) && hash1[s]==ch && hash2[ch]==s) continue; return false; } return is.eof(); }};
0 0
- [leetcode] 290. Word Pattern 解题报告
- [Leetcode] 290. Word Pattern 解题报告
- 【LeetCode】Word Pattern 解题报告
- [leetcode] 291. Word Pattern II 解题报告
- [Leetcode] 291. Word Pattern II 解题报告
- Word Pattern解题报告
- Leetcode Word Search 解题报告
- LeetCode Word Break 解题报告
- LeetCode Word Ladder解题报告
- 【LeetCode】Word Break 解题报告
- 【LeetCode】Word Search 解题报告
- [LeetCode]Word Break,解题报告
- [LeetCode]Word Ladder,解题报告
- 【LeetCode】Word Search 解题报告
- LeetCode Word Ladder解题报告
- [LeetCode] Word Search 解题报告
- Word Break [Leetcode解题报告]
- LeetCode---Isomorphic Strings、Word Pattern解题分析
- javase学习大纲
- php环境搭建
- 核心动画
- 向量、因子学习
- 为初学者答效率的问题
- [leetcode] 290. Word Pattern 解题报告
- Linux Ubuntu系统下Apache Maven的安装和配置
- UVA 1451 单调队列
- 2016{太原UI设计师}郭文军分享win8标准的制作
- 给俺的 CSDN 博客加背景音乐 - 高大尚的《心经》背景音乐
- B-tree/B+tree/B*tree
- 打造成功IT项目经理——光环国际——读感
- 架构师于小波:魅族实时消息推送架构
- SDN开发之Linux Ubuntu系统下OpenDaylight源码编译安装和调试