【leetcode】290. Word Pattern
来源:互联网 发布:软件质量管理制度 编辑:程序博客网 时间:2024/06/09 17:19
使用两个map,来分别存放一一对应。细节方面就是对于字符的切割,以及如何查询map的键值是否存在。
class Solution {public: bool wordPattern(string pattern, string str) { if(str.size() == 0 && pattern.size() == 0) return true; vector<string> vec; preprocess(str, vec); if(vec.size() != pattern.size()) return false; unordered_map<char, string> csmap; unordered_map<string, char> scmap; for(int i = 0; i < pattern.size(); ++ i) { string word = csmap[pattern[i]]; if(word.size() == 0) { csmap[pattern[i]] = vec[i]; if(scmap[vec[i]]) return false; scmap[vec[i]] = pattern[i]; } else { if(word != vec[i]) return false; } } return true; } private: void preprocess(string str, vector<string>& vec) { if(str.size() == 0) return; int i = 0; for(; i < str.size(); ++ i) { if(str[i] == ' ') break; } if(i == str.size()) vec.push_back(str); else { vec.push_back(str.substr(0, i)); preprocess(str.substr(i+1), vec); } }};
class Solution {public: bool wordPattern(string pattern, string str) {if(pattern.empty() && str.empty()) return true;if(pattern.empty() || str.empty()) return false;vector<string> word;process(str, word);if(word.size() != pattern.size()) return false; unordered_map<char, string> cTos;unordered_map<string, char> sToc;for(int i = 0; i < pattern.size(); ++ i) {if(cTos.find(pattern[i]) == cTos.end() && sToc.find(word[i]) == sToc.end()) {cTos[pattern[i]] = word[i];sToc[word[i]] = pattern[i];}else if(cTos.find(pattern[i]) == cTos.end() || sToc.find(word[i]) == sToc.end()) return false;else {if(cTos[pattern[i]] != word[i]) return false;if(sToc[word[i]] != pattern[i]) return false;}}return true;}private:void process(string& s, vector<string>& word) {while(!s.empty()) {int pos = s.find(' ');if(pos == -1) {word.push_back(s);s.clear();}else {word.push_back(s.substr(0, pos));s = s.substr(pos + 1);}}}};
1 0
- 【leetcode】290. Word Pattern
- 【leetcode】290. Word Pattern
- 290. Word Pattern LeetCode
- Leetcode 290. Word Pattern
- 【LeetCode】290. Word Pattern
- LeetCode-290. Word Pattern
- LeetCode *** 290. Word Pattern
- leetcode 290. Word Pattern
- LeetCode 290. Word Pattern
- LeetCode 290. Word Pattern
- [leetcode] 290. Word Pattern
- 【LeetCode】290. Word Pattern
- LeetCode-290.Word Pattern
- Leetcode 290. Word Pattern
- leetcode:290. Word Pattern
- 290.[Leetcode]Word Pattern
- [Leetcode]290. Word Pattern
- LeetCode 290. Word Pattern
- ecmall添加市场价
- mybatis 3如何防止SQL注入
- poj 3273
- SpriteBuilder添加的TrueType字体未显示在log中的原因分析
- 常见服务器Apache/Tomcat/JBOSS/Jetty/Nginx区别与对比
- 【leetcode】290. Word Pattern
- x64的调用约定
- HDU题目分类
- SAP 增强出口查找方法
- 聚类分析
- 其他方法
- iOS 使用百度图表插件Echarts
- UVA 11922 Permutation Transformer [Spaly]
- thinkphp学习笔记1