LeetCode 290. Word Pattern
2016-03-05 21:05
225 查看
不符合的情况有三种:1、pattern和str长度不符 2、pattern中不同字母指向str中同一词(a、b->同一词) 3、同一字母指向不同词(a->不同词)
map存字母和单词的对应关系,set存出现过的单词。
class Solution { public: vector<string> split(string str){ vector<string> res; string tmp = ""; for(int i = 0; i < str.length(); ++i){ if(str[i] != ' ') { if(i == str.length() - 1) res.push_back(tmp + str[i]); tmp += str[i]; } else{ res.push_back(tmp); tmp = ""; } } return res; } bool wordPattern(string pattern, string str) { vector<string> res = split(str); if(pattern.length() != res.size()) return false; map<char, string> corre; map<char, string>::iterator it; set<string> word; set<string>::iterator itr; for(int i = 0; i < pattern.length(); ++i){ it = corre.find(pattern[i]); if(it == corre.end()){ itr = word.find(res[i]); if(itr != word.end()) return false; corre.insert(pair<char, string>(pattern[i], res[i])); word.insert(res[i]); } else{ if(it->second != res[i]) return false; } } return true; } };
map存字母和单词的对应关系,set存出现过的单词。
if(it == corre.end()) 即该字母未出现过,如果对应的单词已出现,则代表多字母对应同一词,return false. else 该字母出现过,如果之前出现过的同一字母对应的却是不同的单词,return false.
相关文章推荐
- java 值传递与地址传递(引用)的区别
- UESTC oj 758 P酱的冒险旅途
- 理解进程内存
- Struts中ActionContext和ServletActionContext的比较
- Eclipse上安装GIT插件EGit及使用
- php header setcookie headers_sent函数 函数检查 HTTP 标头是否已被发送以及在哪里被发送
- Twisted中的putChild和getChild
- bzoj 3122 随机数生成器
- android.view.InflateException异常原因及解决方案
- AndroidContext菜单
- Git解决文件冲突、强制更新
- 扩展欧几里得问题
- 学习历程(记录大学学习,电子信息科学类)
- 【模板】Treap
- Linux启动网卡时出现RTNETLINK answers: File exists错误解决方法
- Dubbo分布式服务框架
- 大学第一篇博客
- 安卓模拟器创建和使用SD卡的方法
- bzoj1087
- 蓝桥网 算法提高 铺地毯