【问题标题】:Hamming Distance: Incorrect Count汉明距离:计数不正确
【发布时间】:2018-11-17 23:00:55
【问题描述】:

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

我的输出不正确。我不断得到随机数结果。以下是我的代码:

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。

非常感谢任何有关我哪里出错的帮助!谢谢你。

【问题讨论】:

    标签: c++ arrays function char hamming-distance


    【解决方案1】:

    您应该用\0 测试字符串的结尾,而不是(空格)。

    那么,你的 while 应该是:while (seq1[i] != '\0')

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2019-04-23
        • 2017-09-10
        • 1970-01-01
        • 1970-01-01
        • 2015-03-21
        • 2012-03-10
        • 2014-01-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多