大概是只仓鼠 2024-02-20 15:17 采纳率: 78.7%
浏览 4

求无重复字符的最长子串的一个解的JAVA代码解释


class Solution {
    public int lengthOfLongestSubstring(String s) {
      int[] hash = new int[128];
        int ans = 0, prev = 0, i = 0;
        for (char c : s.toCharArray()) ans = Math.max(ans, -(prev = Math.max(prev, hash[c])) + (hash[c] = ++i));
        return ans;
    }
}

LEETCODE的题目,求无重复字符的最长子串的一个解,能否详细解释一下其中这段代码?没看明白。


      for (char c : s.toCharArray()) ans = Math.max(ans, -(prev = Math.max(prev, hash[c])) + (hash[c] = ++i));
  • 写回答

4条回答 默认 最新

  • 爱笑的笑笑 2024-02-20 15:37
    关注

    它的实现使用了一个长度为128的数组hash来存储字符出现的位置,prev表示当前不重复子串的起始位置,i表示当前遍历到的字符位置。
    在循环遍历字符串s的过程中,通过更新hash数组中字符的位置信息,可以计算出以当前字符结尾的最长不重复子串的长度,并不断更新ans变量保存最大长度。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月20日

悬赏问题

  • ¥30 关于#微信#的问题:微信实名不绑卡 可以实现吗 有没有专家 可以解决
  • ¥15 (标签-考研|关键词-set)
  • ¥15 求修改代码,图书管理系统
  • ¥15 请问有没求偏多标签数据集yeast,reference,recreation,scene,health数据集。
  • ¥15 传感网应用开发单片机实训
  • ¥15 Delphi 关于sAlphaImageList使用问题
  • ¥15 寻找将CAJ格式文档转txt文本的方案
  • ¥15 shein测试开发会问些啥我是写java的
  • ¥15 关于#单片机#的问题:我有个课程项目设计,我想在STM32F103veTX单片机,M3主控模块上设计一个程序,在Keil uVision5(C语言)上代码该怎么编译?(嫌钱少我可以加钱,急急急)
  • ¥15 opnet仿真网络协议遇到问题