leetcode290
Posted yxlsblog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode290相关的知识,希望对你有一定的参考价值。
1.题目:
给定一种 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
说明:
你可以假设 pattern
只包含小写字母, str
包含了由单个空格分隔的小写字母。
解题思路:
使用哈希表来解决这个问题。
按key值遍历哈希表,如果有这个key值,但value与当前单词不同,说明不匹配。
如果没有这个key值,但是发现了与当前单词相同的value,说明不匹配。
最后,如果pattern的字符个数与str中的单词个数不同说明不匹配。
代码:
class Solution{
public: bool wordPattern(string pattern, string str) { unordered_map<char,string> m; istringstream is(str); int i = 0; for(string word;is>>word;i++){
if(i>=pattern.size()) return false; if(m.find(pattern[i]) != m.end()){ if(m[pattern[i]] != word){ return false; } }else{ for(auto it = m.begin();it!=m.end();it++){ if(it->second == word){ return false; } } m[pattern[i]] = word; } } return i == pattern.size(); } };
相关知识:
1.字符流类
2.别忘记特殊情况,str中单词个数 不等于 pattern中字符个数。
以上是关于leetcode290的主要内容,如果未能解决你的问题,请参考以下文章