題目描述:
給定一種 pattern(模式)
和一個字串 str
,判斷 str
是否遵循相同的模式。
這裡的遵循指完全匹配,例如, pattern
裡的每個字母和字串 str
中的每個非空單詞之間存在著雙向連線的對應模式。
示例1:
輸入: pattern ="abba"
, str ="dog cat cat dog"
輸出: true
示例 2:
輸入:pattern ="abba"
, str ="dog cat cat fish"
輸出: false
示例 3:
輸入: pattern ="aaaa"
, str ="dog cat cat dog"
輸出: false
示例 4:
輸入: pattern ="abba"
, str ="dog dog dog dog"
輸出: false
說明:
你可以假設 pattern
只包含小寫字母, str
包含了由單個空格分隔的小寫字母。
實現方法:
class Solution { public: bool wordPattern(string pattern, string str) { int a=pattern.size(); int b=0; vector<string> strstr; vector<string> res; string tem=""; for(int i=0;i<str.size();i++) { if(str[i]==' ') { b++; strstr.push_back(tem); tem=""; } else tem=tem+str[i]; } b++; strstr.push_back(tem); if(a!=b) return false; for(int j=0;j<a;j++) { res.push_back(pattern[j]+strstr[j]); } for(int j=0;j<a;j++) { for(int k=j+1;k<a;k++) { int ll=res[j].size(); int aa=res[k].size(); char mm[ll]; char nn[aa]; strcpy(mm,res[j].c_str()); strcpy(nn,res[k].c_str()); char* p=mm; char* q=nn; int tag=strcmp(p,q); if(tag!=0) { if(res[j][0]!=res[k][0]&&strstr[j]!=strstr[k]) { continue; } else return false; } else continue; } } return true; } };