LeetCode 290. Word Pattern
2016-07-22 01:49
316 查看
290. Word Pattern
My Submissions QuestionEditorial Solution
Total Accepted: 33127 Total Submissions: 114634 Difficulty: Easy
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.
Credits:
Special thanks to @minglotus6 for adding this problem and creating all test cases.
My Submissions QuestionEditorial Solution
Total Accepted: 33127 Total Submissions: 114634 Difficulty: Easy
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.
Credits:
Special thanks to @minglotus6 for adding this problem and creating all test cases.
class Solution { public: bool wordPattern(string pattern, string str) { map<char, string> ptos; map<string, char> stop; int len = pattern.length(); string *s = new string [len]; int cnt = 0; for(int i = 0; i < str.length(); i++) { if(str[i] == ' ') cnt++; } if(cnt != len - 1) { return false; } int t = 0; for(int i = 0; i < str.length(); i++) { if(str[i] != ' ') { s[t] += str[i]; } else { t++; } } for(int i = 0; i < len; i++) { if(ptos.find(pattern[i]) != ptos.end() && ptos[pattern[i]] != s[i] || stop.find(s[i]) != stop.end() && stop[s[i]] != pattern[i]) return false; ptos[pattern[i]] = s[i]; stop[s[i]] = pattern[i]; } return true; } };
相关文章推荐
- LeetCode 58. Length of Last Word
- 统计项目源码行数的Java代码
- LeetCode 203. Remove Linked List Elements
- LeetCode 38. Count and Say
- java实现鼠标和键盘动作后台监听(未测试)
- LeetCode 203. Remove Linked List Elements
- 利用aosv库实现各种滚动与组件的互动
- LeetCode 225. Implement Stack using Queues
- LeetCode 14. Longest Common Prefix
- CSS3实现10种Loading效果
- Android适配——采用Values-dpi-wSize X hSize 模式,并分析原理
- HDU 4768 Flyer(二分)
- LeetCode 234. Palindrome Linked List
- HDU 4768 Flyer(二分)
- js控制文本框只能输入中文、英文、数字与指定特殊符号
- LeetCode 67. Add Binary
- 常用正则表达式列表
- 在 mac 系统下播放.csf 视频的方法
- LeetCode 28. Implement strStr()
- 利用Gson实现Json串和Java Bean互转(未测试)