我试图创建一个函数来计算两个字符串之间的汉明距离。当我调用这个函数时,它应该告诉我两个字符串之间不匹配的字符数。
我的输出不正确。我一直得到随机数字的结果。以下是我的代码:
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.
非常感谢任何有关我出错的帮助!谢谢。
答案 0 :(得分:1)
您应该使用\0
测试字符串的结尾,而不是(空格)。
那么你的时间应该是:while (seq1[i] != '\0')
答案 1 :(得分:0)
条件seq1[i] != ' '
不是检查您是否已到达字符串末尾的好方法。假设您的字符串以空值终止,那么您可以改为使用seq1[i] != '\0'
。
您看到“随机”结果的原因是循环没有遇到字符串中的空格,并且继续读取超出字符串结尾的程序内存的其他部分。该循环仅在遇到恰好包含与' '
表示相同位的内存字节时停止。
您还应该考虑如何处理两个字符串长度不同的情况。