LeetCode:Word Pattern
3771 ワード
LeetCode:Word Pattern
1、タイトル: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.
2、コード:ハッシュテーブルの物語で、文字列を処理します.次のようになります.
Isomorphic Strings(アイソトープ文字列)http://blog.csdn.net/bestzem/article/details/51953658
1、タイトル: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.
2、コード:ハッシュテーブルの物語で、文字列を処理します.次のようになります.
Isomorphic Strings(アイソトープ文字列)http://blog.csdn.net/bestzem/article/details/51953658
class Solution {
public:
bool wordPattern(string pattern, string str) {
string hash[26]{};
auto iterp=pattern.begin(),iters=str.begin();
for(auto iter1=iters+1;iterp!=pattern.end()&&iters!=str.end();++iter1)
{
if((iter1==str.end()||*iter1==' ')&&(hash[*iterp-97].empty()))
{
string s(iters,iter1);
//
for(int i=0;i<26;++i)
{
if(hash[i]==s)
{
return false;
}
}
hash[*iterp-97]=s;
if(iter1!=str.end())
iters=iter1+1;
else
iters=iter1;
++iterp;
}
else if((iter1==str.end()||*iter1==' ')&&(!hash[*iterp-97].empty()))
{
// ,
if(hash[*iterp-97]!=string(iters,iter1))
return false;
if(iter1!=str.end())
iters=iter1+1;
else
iters=iter1;
++iterp;
}
}
//
if(iterp!=pattern.end()||iters!=str.end()) return false;
return true;
}
};