【发布时间】:2013-04-22 01:30:43
【问题描述】:
在此任务中,我需要获取两个字符串序列 1 和序列 2 之间的汉明距离(两个相等长度的字符串之间的汉明距离是对应符号不同的位置数 - 来自维基百科)。
首先我制作了 2 个新字符串,这是 2 个原始字符串,但都使用小写字母,以便于比较。然后我求助于使用 for 循环和 if 来比较两个字符串。对于这 2 对字符串中字符的任何差异,循环会将 1 添加到 int x = 0。方法的返回将是此 x 的值。
public static int getHammingDistance(String sequence1, String sequence2) {
int a = 0;
String sequenceX = sequence1.toLowerCase();
String sequenceY = sequence2.toLowerCase();
for (int x = 0; x < sequenceX.length(); x++) {
for (int y = 0; y < sequenceY.length(); y++) {
if (sequenceX.charAt(x) == sequenceY.charAt(y)) {
a += 0;
} else if (sequenceX.charAt(x) != sequenceY.charAt(y)) {
a += 1;
}
}
}
return a;
}
那么代码看起来足够好并且功能足够吗?我可以修复或优化代码吗?提前致谢。我是个大菜鸟,如果我问了什么愚蠢的问题,请原谅我
【问题讨论】:
-
anything I could do to fix是属于这里的问题。optimize问题属于代码审查 -
这个问题更适合codereview.stackexchange.com。你也会在那里得到更好的答案。
-
您的代码也没有输出正确的答案。我用 abcd 和 abdd 测试,输出是 12
-
你看过莱文斯坦距离吗?有很多库可以做到这一点,包括 apache commons
-
@isti_spl 请注意,作业标签已被解除:meta.stackexchange.com/questions/147100/…
标签: java string for-loop compare equals