汉明距离:计数不正确
Hamming Distance: Incorrect Count
我正在尝试创建一个函数来计算两个字符串之间的汉明距离。当我调用这个函数时,它应该告诉我两个字符串之间不匹配的字符数。
我的输出不正确。我不断得到随机数结果。下面是我的代码:
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。
非常感谢任何关于我哪里出错的帮助!谢谢你。
您应该使用 [=10=]
测试字符串的结尾,而不是 </code> (space).</p>
<p>那么你的时间应该是:<code>while (seq1[i] != '[=11=]')
条件 seq1[i] != ' '
不是检查是否已到达字符串末尾的好方法。假设您的字符串以 null 结尾,那么您可以改用 seq1[i] != '[=11=]'
。
您看到 "random" 结果的原因是循环没有在字符串中遇到 space 并且继续读取字符串末尾到程序的其他部分记忆。只有当遇到一个内存字节恰好包含与 ' '
.
的表示相同的位时,循环才会停止
您还应该考虑如何处理两个字符串长度不同的情况。
我正在尝试创建一个函数来计算两个字符串之间的汉明距离。当我调用这个函数时,它应该告诉我两个字符串之间不匹配的字符数。
我的输出不正确。我不断得到随机数结果。下面是我的代码:
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。
非常感谢任何关于我哪里出错的帮助!谢谢你。
您应该使用 [=10=]
测试字符串的结尾,而不是 </code> (space).</p>
<p>那么你的时间应该是:<code>while (seq1[i] != '[=11=]')
条件 seq1[i] != ' '
不是检查是否已到达字符串末尾的好方法。假设您的字符串以 null 结尾,那么您可以改用 seq1[i] != '[=11=]'
。
您看到 "random" 结果的原因是循环没有在字符串中遇到 space 并且继续读取字符串末尾到程序的其他部分记忆。只有当遇到一个内存字节恰好包含与 ' '
.
您还应该考虑如何处理两个字符串长度不同的情况。