javascript - 使用两个 for 循环来比较两个字符串

标签 javascript

我正在 exercism.io 上进行练习,第三个练习要求我们比较两个 DNA 字符串并返回它们之间的差异(汉明距离)。

例如:

GAGCCTACTAACGGGAT
CATCGTAATGACGGCCT
^ ^ ^  ^ ^    ^^

在该比较中排列了 7 个不同的 Angular 色。我的问题是我是否采取了正确的方法来解决这个问题。我创建了两个空数组,创建了一个循环遍历两个字符串并在它们相遇时推送不同字母的函数。

我尝试通过控制台运行它,但总是收到意外的输入错误。

    var diff = [];
    var same = [];
    function ham(dna1, dna2) {
      for (var i = 0; i < dna1.length; i++)
      for (var j = 0; j < dna2.length; i++){
        if (dna1[i] !== dna2[j]) {
          console.log(dna1[i]);
          diff.push(dna1[i]);
        }
        else {
          console.log(dna1[i]);
          same.push(dna1[i]);
        }
      return diff.length;
    }

    ham("GAGCCTACTAACGGGAT", "CATCGTAATGACGGCCT");
    console.log("The Hamming distance between both DNA types is " +                 diff.length + ".");

最佳答案

不要使用全局变量。

如果没有必要,请勿使用嵌套循环。

不要在数组中存储无用的东西。

function ham(dna1, dna2) {
  if (dna1.length !== dna2.length) throw new Error("Strings have different length.");
  var diff = 0;
  for (var i = 0; i < dna1.length; ++i) {
    if (dna1[i] !== dna2[i]) {
      ++diff;
    }
  }
  return diff;
}
var diff = ham("GAGCCTACTAACGGGAT", "CATCGTAATGACGGCCT");
console.log("The Hamming distance between both DNA types is " + diff + ".");

关于javascript - 使用两个 for 循环来比较两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41524474/

相关文章:

javascript - 有没有一种简单的方法可以添加 struts 1.3 html styleId 属性而不触及每个元素?

javascript - "the future of browser gaming"有多安全?

javascript - 从指令设置表单元素的属性

javascript - 谷歌地图 API V3 Over_Query_Limit

javascript - Angular 形式 - 禁用 ng-required 验证

javascript - 如果单击内部按钮,则关闭模态

php - jquery 自动完成,加入显示数据的最佳方式

javascript - 代码执行抛出错误 "object is not a function"

javascript - Chart.js 在 Android 上消失了

javascript - 在 ag-grid 中显示来自服务器的数据