LeetCode:Word Pattern

来源:互联网 发布:幼儿园用的软件 编辑:程序博客网 时间:2024/06/10 04:10

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

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;    }};
0 0
原创粉丝点击