其实就是类似一些和谐系统。。。。。
思路:看到这道题目的时候,开始是没有思路的。因为没大概看清楚题目的意思。后来在网上搜了下,自己又慢慢理解了下。猜想题目大概的意思,可能是要匹配目标字符串,只要里面包含模式中所有的字符就算匹配成功,不用考虑顺序。这种情况下,很容易想到以前的O(mn)的方法。但是有没有再快点的呢?答案是肯定的,我们在这里需要借助hash算法。
贴上代码:
/*=========================================================*\ 33.(字符串) 实现一个挺高级的字符匹配算法: 给一串很长字符串,要求找到符合要求的字符串,例如目的串:123 1******3***2 ,12*****3这些都要找出来 其实就是类似一些和谐系统。。。。。 \*=========================================================*/ #include <iostream> using namespace std; bool isMatch(char *src,char *des){ int srcLen = strlen(src); int desLen = strlen(des); int hashTable[256] = {0}; for(int i = 0;i < srcLen ; ++i){ hashTable[src[i]] = 1; } for(int i = 0;i < desLen ; ++i){ if(0 == hashTable[des[i]]){ return false; } } return true; } int main(){ char src[] = "234335adfas234"; char des[] = "123"; cout << isMatch(src,des) << endl; system("pause"); return 1; }