字符匹配面試題,兩個字符串如果字符和長度都相等,則稱這兩個字符串匹配,如abcd和dcab。用函數實現,
對這樣的問題我們可以考慮使用hash算法來實現,使用兩個256個單元的hash數組,根據字符的ASCII作爲hash數組的下標, 每個數組單元中記錄字符出現的次數
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
bool Is_Mach(const char *str1 , const char *str2)
{
unsigned int hash1[256]={0};
unsigned int hash2[256]={0};
const char *p=str1;
assert(str1 !=NULL && str2!=NULL); //assert函數確保兩個字符串都不爲空
if(strlen(str1)!=strlen(str2))
return 0;
while(*str1)
{
hash1[*str1]++;
str1++;
}
while(*str2)
{
hash2[*str2]++;
str2++;
}
while(*p)
{
if(hash1[*p]!=hash2[*p])
return 0;
p++;
}
return 1;
}
int main()
{
char src1[] = "abcdfcgg";
char src2[] = "abcdfggc";
/* printf("%d/n", Is_Mach(src1, src2)); */
printf("%d/n", Is_Mach(src1, src2));
system("pause");
return 0;
}