c - 搜索检查字符串匹配的算法

标签 c string

我有两个长度相同的字符串ab,分别是l1l2。我想返回给定两个字符串的常见字母数。例如,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/

相关文章:

c++ - 在结构中指定设备特定功能

python - Fortran 或 C 和 f2py 求解微分方程

python - 比较python中的希伯来语字符串

c++ - 从 std::string vector 返回 char

objective-c - 如何制作 Objective-C 到 C 转换器

c - 如何修复从 C 中的函数传递指针的段错误?

string - 应该是VBA中的简单循环程序

c - strcpy() 不适用于某些字符串,但不适用于其他字符串

javascript - 如何找到特定的模式?

c - 功能和程序指令存储器