【问题标题】:Explain work of lastIndexOf in this for loop在这个 for 循环中解释 lastIndexOf 的工作
【发布时间】:2022-07-07 00:02:40
【问题描述】:

有人可以向我解释一下 lastIndexOf 究竟是如何工作的吗? 具体来说:我不明白如何比较 str[i] !== i 在这里工作。它如何检测字符是否重复?

这必须是一个简单的练习,以确定 str 是否具有在同一个 str 中不会出现两次的唯一字符。

    isUnique('abcdef'),
    isUnique('89%df#$^a&'),
    isUnique('abcaef'));

function isUnique(str)
{
    for(var i = 0; i < str.length; i++)
    {
        if(str.lastIndexOf(str[i]) !== i) return false;
    }
    return true;
}

【问题讨论】:

  • 尝试记录 istr[i]str.lastIndexOf(str[i]) 以查看它们是什么。
  • 因为您不想计算要搜索的字母。因此,您只在 之后搜索它。而且由于您从一开始就这样做,所以您不会错过任何一封信。
  • if(str.lastIndexOf(str[i]) !== str.indexOf(str[i])) return false; 对我来说这个逻辑是有道理的,但我无法弄清楚我们如何将字母“A”与数字 i 进行比较,就像这里 if(str.lastIndexOf(str[i]) !== i) return false;
  • @ITgoldman — 不,应该是 str.indexOf(str[i], i+1)
  • @MaxChergik 为什么str.lastIndexOf(str[i]) 会回信A...?

标签: javascript


【解决方案1】:

假设你有一个像这样的string'abcaef',让我们开始检查它是​​否是唯一的......

我们从第一个 char: 0 开始,str[0]a,如果 str 中的所有字符都是唯一的,我们希望 lastIndexOf("a") 返回 0 但它返回 3,这意味着还有另一个 @ 987654328@表示不在位置0

注意lastIndexOf 从左侧返回索引,但它从右侧检查并从右侧返回第一次出现的索引:

a b c a e f
0 1 2 3 4 5 <-

【讨论】:

    猜你喜欢
    • 2019-10-21
    • 2023-01-07
    • 1970-01-01
    • 2018-12-31
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多