【问题标题】:Logic behind code determining if two javascript strings are anagrams代码背后的逻辑确定两个 javascript 字符串是否是字谜
【发布时间】:2017-08-13 11:09:00
【问题描述】:

我的朋友把这段代码发给我,它可以工作,但我不明白。

function anagram(str1, str2){
  if(str1.length !== str2.length){
    return false;
  }

  var string1 = str1.toLowerCase();
  var string2 = str2.toLowerCase();

  if(string1 === string2){
    return true;
  }

  var matched = true;
  var count = 0;

  while(string1.length){
    if(string2.length > 1)
      break;
    if(string2.indexOf(string1[count]) > -1)
      string2 = string2.replace(string1[count], '');
    else
      return false;

    count++;
  }
  return matched;
}

我了解前两个if 语句和.toLowerCase() 分配,但我不明白var matched = true; 的目的,然后我知道为什么以break 结尾的if 语句存在但我不太明白最后的if/else 声明。

【问题讨论】:

  • 或许你应该问问你的朋友?

标签: javascript anagram


【解决方案1】:

var matching = true - 这什么都不做,因为这个变量的值在整个代码中都没有改变。

“indexOf() 方法返回指定值在字符串中第一次出现的位置” 你的朋友正在使用 indexOf() 遍历 string1 中的每个字符以查找 string2 中的现有字符。在任何时候找不到字符时,它都会返回 false 并跳出 while 循环。

【讨论】:

  • 非常感谢!
  • 哦,好的;抱歉,我还是新手。
  • 谢谢你。太好了,它对你有用
猜你喜欢
  • 2016-10-17
  • 2016-04-07
  • 2014-09-03
  • 2021-01-11
  • 2019-05-02
  • 2013-08-18
  • 2012-12-17
  • 1970-01-01
相关资源
最近更新 更多