You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何理解判断字符串唯一字符的if条件代码逻辑?

拆解这段唯一字符检查代码的逻辑

先明确这段代码的作用:找到字符串中第一个只出现一次的字符的索引,如果所有字符都重复,返回-1。

核心判断语句拆解

我们把s.indexOf(s.charAt(i), s.indexOf(s.charAt(i)) + 1) == -1拆成关键部分一步步看:

  1. s.charAt(i)
    拿到字符串第i位的字符。比如循环到i=0时,s="leetcode",这里拿到的是字符'l'。

  2. s.indexOf(s.charAt(i))
    调用indexOf的基础方法,返回当前字符第一次在字符串中出现的索引。比如'l'第一次出现的位置是0。

  3. s.indexOf(字符, 起始位置)
    这是indexOf的重载方法,第二个参数指定从哪个索引开始往后搜索。这里传入的起始位置是「第一次出现的索引 + 1」,意思是:从当前字符第一次出现位置的下一位开始,找这个字符有没有再次出现。

  4. 判断结果是否为-1
    indexOf找不到目标字符时会返回-1。所以这个判断的意思是:当前字符在第一次出现的位置之后,再也没有重复出现过——也就是这个字符在整个字符串里只出现了一次。

结合例子走一遍流程

拿s="leetcode"举例:

  • 循环到i=0,字符是'l'
  • s.indexOf('l')返回0,起始搜索位置变成0+1=1
  • 从索引1开始找'l',整个字符串后面没有'l',所以indexOf返回-1
  • 满足判断条件,直接返回i=0,这就是第一个唯一字符的索引

代码整体逻辑

循环遍历字符串的每个字符,对每个字符执行上述检查:

  • 一旦找到第一个「只出现一次」的字符,立刻返回它的索引
  • 如果循环完所有字符都没找到符合条件的,返回-1

内容的提问来源于stack exchange,提问作者Bek150

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:25:23