Leetcode-290 Word Pattern(单词模式)

本文深入探讨了一种使用C++实现的字符串匹配算法,该算法通过解析输入字符串并运用模式匹配来验证字符串是否符合预设的模式。文章详细介绍了算法的实现过程,包括如何从字符串中提取单词,并通过映射表进行模式匹配,确保每一对字符和单词的一一对应,以判断整个字符串是否完全匹配预设模式。
 1 class Solution
 2 {
 3     public:
 4         int getWordEnd;
 5         string getWord(string str)
 6         {
 7             string tmp;
 8             int i;
 9             for(i = getWordEnd;str[i] != ' '&& str[i]!='\0';i ++)
10             {
11                 tmp += str[i];
12             }
13             getWordEnd = i+1;
14             return tmp;
15         }
16         bool wordPattern(string pattern, string str)
17         {
18             map<char,string> m;
19             map<string,char> m2;
20             getWordEnd = 0;
21             for(int i = 0;i < pattern.size();i ++)
22             {
23                 string word = getWord(str);
24                 if(!m.count(pattern[i]))
25                 {
26                     m[pattern[i]] = word;
27                     if(!m2.count(word))
28                     {
29                         m2[word] = pattern[i];
30                     }
31                     else
32                     {
33                         return false;
34                     }
35                 }
36                 else if(m[pattern[i]] != word)
37                 {
38                     cout << i <<endl;
39                     return false;
40                 }
41             }
42 
43             if(getWordEnd-1 != str.size())
44                 return false;
45             return true;
46         }
47 };

 

转载于:https://www.cnblogs.com/Asurudo/p/9809543.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值