您的位置:首页 > 其它

Word Pattern -- Leetcode

2016-07-02 18:51 405 查看
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.

题目可以理解为

存在两个集合,找出集合元素之间的是否存在一一对应的映射关系。

class Solution {
public:
bool wordPattern(string pattern, string str) {
map<string, int> map_p;
map<string, int> map_s;
istringstream in(str);
int i = 0;
for (string word_s; pattern.size() && in >> word_s ; ++i) {
const string word_p(1, pattern[i]);
if (map_s[word_s] != map_p[word_p])
return false;

map_p[word_p] = map_s[word_s] = i + 1;
}

return i == pattern.size() && in.eof();
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 映射 同构