Javascript 当一次运行两个for循环来创建一个等值线图时,为什么该算法要求我生成j=i+;1.
等值线是一个没有连续或非连续重复字母的单词。 为什么我需要设置j=I+1Javascript 当一次运行两个for循环来创建一个等值线图时,为什么该算法要求我生成j=i+;1.,javascript,for-loop,Javascript,For Loop,等值线是一个没有连续或非连续重复字母的单词。 为什么我需要设置j=I+1 var git = "pot-luck" function isIsogram(str){ var i; var j str = str.toLowerCase(); for(**i = 0**; i < str.length; ++i){ for(**j = i+1** ; j < str.length; ++j){ if(str[i] === str[j])
var git = "pot-luck"
function isIsogram(str){
var i; var j
str = str.toLowerCase();
for(**i = 0**; i < str.length; ++i){
for(**j = i+1** ; j < str.length; ++j){
if(str[i] === str[j])
return false;}
}
return true;
}
isIsogram(git)
var git=“运气好”
函数isIsogram(str){
变量i;变量j
str=str.toLowerCase();
对于(**i=0**;i
当你开始循环时,你从索引0
开始,使用i
。在本例中,您正在示例中检查“g”
然后使用
j
循环,但不需要再次检查'g',因此可以在i
中添加一个,并从下一个索引开始,即字母'i'。依此类推,直到完成字符串循环。好的,让我们举两个简单的例子:nomm和ABCDEFG
这些是带有索引的数组:
0 - N
1 - O
2 - M
3 - I
4 - M
以及:
第一个示例具有重复的M。让我们来看看这个循环 所以
i=0
然后j
从1循环到4
Comparing `N to O` - No Match
Comparing `N to M` - No Match
Comparing `N to I` - No Match
Comparing `N to M` - No Match
Comparing `M to I` - No Match
Comparing `M to M` - Match. Exit because a letter repeated.
现在我们转到i=1
和j
从2到4的循环,因为我们知道第一个字符没有重复
Comparing `O to M` - No Match
Comparing `O to I` - No Match
Comparing `O to M` - No Match
我们现在知道O没有重复。我们继续测试i=2
和j
从3到4
Comparing `N to O` - No Match
Comparing `N to M` - No Match
Comparing `N to I` - No Match
Comparing `N to M` - No Match
Comparing `M to I` - No Match
Comparing `M to M` - Match. Exit because a letter repeated.
第二个例子,我们将以同样的方式循环。逐一核实。一旦我们确定一封信没有重复,我们就不必重新检查之前验证过的信。这就是为什么我们在i
之后为每个字母循环j
,因为您已经检查了前面的字母。你只需要确保一封信不会重复。我完全迷路了,你能再详细一点吗?再补充一点。如果i和j从同一个索引开始,它们都是假的,因为你会将相同的数字相互比较,这是真的。肯定会破坏检查的目的。