字符串匹配算法实现(两个字符串中含有的字符和个数都相同)

来源:互联网 发布:波兰 知乎 编辑:程序博客网 时间:2024/05/21 16:21
假设两个字符串中所含有的字符和个数都相同就叫这两个字符串匹配,比如:abcda和adabc,由于出现的字符个数都是相同,只是顺序不同,所以这两个字符串是匹配的。



int match( const unsigned char *s1, const unsigned  char *s2 ){int  a[256] = {0}; //a[97] 记录字符‘a'的出现次数int i = 0;while( *s1 != '\0' ){a[*s1]++;  //为字符*s1 计数s1++;}while( *s2 != '\0' ){a[*s2]--; //此处减1操作,若最终个数相同,抵消为0s2++;}//若a[i]为正数,表明s1比s2多出来 a[i]个 ASCII码为i的字符。负数则相反。for(i=0; i<=255; i++){if( a[i] != 0 ){return 0; //不匹配}}return 1;  //匹配}