我正在尝试创建一个函数来计算两个字符串之间的汉明距离。当我调用此函数时,它应该告诉我两个字符串之间不匹配的字符数。

我的输出不正确。我一直在获得随机数结果。下面是我的代码:

using namespace std;

// function to calculate Hamming distance
int HammingDistance(char seq1[], char seq2[])
{
    int i = 0, count = 0;
    while (seq1[i] != ' ')
    {
        if (seq1[i] != seq2[i])
            count++;
        i++;
    }
    return count;
}


int main()
{
    char seq1[] = "doga";
    char seq2[] = "dogb";

    cout << HammingDistance(seq1, seq2) << endl;

    return 0;
}


我不断在输出中得到随机数结果,例如99或207。

在这个例子中,我应该得到1。

非常感谢我在哪里出错了!谢谢。

最佳答案

条件seq1[i] != ' '并不是检查您是否已到达字符串末尾的好方法。假设您的字符串以null结尾,那么您可以改用seq1[i] != '\0'

您看到“随机”结果的原因是循环没有在字符串中遇到空格,而是继续将字符串的末尾读入程序内存的其他部分。仅当遇到遇到与' '表示形式包含相同位的内存字节时,循环才会停止。

您还应该考虑如何处理两个字符串长度不同的情况。

关于c++ - 汉明距离:错误计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50751225/

10-11 03:48