确定两个 javascript 字符串是否为字谜的代码背后的逻辑
Logic behind code determining if two javascript strings are anagrams
我的朋友发给我这个代码,它有效,但我不明白它的全部。
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;
的目的,然后我知道为什么if
以 break
结尾的语句在那里,但我不太理解最后一个 if/else
语句。
var matched = true - 这什么都不做,因为这个变量的值在整个代码中都没有改变。
"The indexOf() method returns the position of the first occurrence of a specified value in a string" 您的朋友正在使用 indexOf() 遍历 string1 中的每个字符以查找 string2 中的现有字符。在找不到字符的任何时候,它都会 returns false 并跳出 while 循环。
我的朋友发给我这个代码,它有效,但我不明白它的全部。
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;
的目的,然后我知道为什么if
以 break
结尾的语句在那里,但我不太理解最后一个 if/else
语句。
var matched = true - 这什么都不做,因为这个变量的值在整个代码中都没有改变。
"The indexOf() method returns the position of the first occurrence of a specified value in a string" 您的朋友正在使用 indexOf() 遍历 string1 中的每个字符以查找 string2 中的现有字符。在找不到字符的任何时候,它都会 returns false 并跳出 while 循环。