字符串匹配问题编程

来源:百度知道 编辑:UC知道 时间:2024/05/01 19:11:07
如果两个英文单词,组成它们的字符集合相同,而且相同字符出现的次数也相同,则称这两个词匹配:比如说:同”abbc”与词”babc”是匹配的。有一个词典,存储在字符串数组const char* dictionary[n]中,数组的每一个元素是一个词。对于任意给出的句子。句子中的单词使用空格分割。请实现以下函数,判断句子中是否有词和词典中的词匹配。
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))