我有两个长度相同的字符串a
、b
,分别是l1
、l2
。我想返回给定两个字符串的常见字母数。例如,a='ABC'
和 b='CDE'
。我的算法应该返回 1
,因为只有 'C'
是两个字符串中的公共(public)字母,但它返回 26
。谁能解释一下为什么吗?这是我的算法:
for(i=0; i < l1; i++)
{
for(j=0; j < l2; j++)
{
if(a[i] == b[j])
{
found++;
}
}
}
最佳答案
您的算法不符合您的标准。很容易看出如果字符串是“CCC”会发生什么。
这样做:
int letters[26]={0};
int both[26]={0};
for(int i=0; i<l1; i++)
letters[a[i]-'A']=1;
for(int i=0; i<l2; i++)
if(letters[b[i]-'A'])
both[b[i]-'A']=1;
int found=0;
for(int i=0; i<26; i++)
found+=both[i];
关于c - 搜索检查字符串匹配的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45257844/