字符串匹配问题编程
来源:百度知道 编辑:UC知道 时间:2024/05/01 19:11:07
bool is_matching( const char* dictionary[], int n, const char* sentence);
请给出编程思路,最好有程序
这个是看两个字符串是否匹配的函数
bool equal(char* a, char* b)
{
int count[2][60]={0};
//这个二维数组记录字符串a或b中每个字母出现的次数,ascii码中65-90代表A-Z,97-122代表a-z,所以这里我用asii码的值减去65作为二维数组的下标,如果count[0][0]=2,就代表a字符串里面'A'出现了2次,如果是count[1][1]=1就代表b字符串里'B'出现了1次,清楚了吧。
int length=0;
if(strlen(a) != strlen(b)) //长度不同直接返回false
return false;
//下面就是计算每个字符出现个数的过程
while(*a != '\0')
{
count[0][*a-65]++;
a++;
}
while(*b != '\0')
{
count[1][*b-65]++;
b++;
}
//最后比较count[0]和count[1],完全一致就是true,否则就是false
for(int i=0;i<60;i++)
if(count[0][i]!=count[1][i])
return false;
return true;
}
bool is_matching( const char* dictionary[], int n, const char* sentence)
{
//这里就循环调用equal就可以了
for(int i=0;i<n)
if(equal(dictionary[i], sentence))