您的位置:首页 > 其它

290. Word Pattern

2016-07-07 11:59 330 查看
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.

205. Isomorphic Strings(重要)类似

class Solution {
public:
bool wordPattern(string pattern, string str) {
int lenP = pattern.size();

vector<string> vec;
stringstream ss(str);
string s;
while (ss >> s){
vec.push_back(s);
}

int lenStr = vec.size();
if (lenP != lenStr){
return false;
}

unordered_map<string, string> hash, reflect;
for (int i = 0; i < lenP; i++){
if (!hash.count(to_string(pattern[i])) && !reflect.count(vec[i])){
hash[to_string(pattern[i])] = vec[i];
reflect[vec[i]] = to_string(pattern[i]);
}
else{
if (hash[to_string(pattern[i])] != vec[i]){
return false;
}
}
}
return true;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: