Word Pattern

1966 ワード

Word Pattern
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.
    Credits: Special thanks to @minglotus6 for adding this problem and creating all test cases.
    Subscribe to see which companies asked this question
    class Solution {
    public:
        bool wordPattern(string pattern, string str) {
            auto i = 1;
            string tmp,tmp_str;
            istringstream is(str);
            is>>tmp_str;
            if(tmp_str==""&&pattern[0]=='\0')return true;
            if(tmp_str==""&&pattern[0]!='\0')return false;
            while(is>>tmp!=""){
                 if(pattern[i]=='\0')
                return false;
                if(pattern[i]==patterm[i-1]){
                    if(tmp != tmp_str)
                    return false;
                }
                else{
                    if(tmp == tmp_str)
                    return false;
                }
               
                tmp_str = tmp;
                ++i;
            }
            if(pattern[i]!='\0')return false;
            
            return true;
            
        }
        
    };