LeetCode 290 Word Pattern

xiaoxiao2021-02-27  509

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.

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.

题意:pattern串和str串匹配,一个字符对应一个字符串。 要注意匹配的时候pattern串和str串唯一。

class Solution { public: bool wordPattern(string pattern, string str) { str += ' '; map<string,char> mm; mm.clear(); bool opt[30]; memset(opt,false,sizeof(opt)); string s = ""; int j = 0; for(int i=0; str[i]; i++) { if(str[i]==' ') { if( j == pattern.length()) return false; if(opt[pattern[j]-'a']) { if(mm[s] == pattern[j]) j++; else return false; } else { if(mm[s]) return false; else mm[s] = pattern[j],opt[pattern[j]-'a'] = true, j++; } s = ""; } else s += str[i]; } if( j != pattern.length()) return false; return true; } };
转载请注明原文地址: https://www.6miu.com/read-532.html

最新回复(0)