一、题目内容

image.png

二、题解

解法1:

思路

image.png
image.png

  • 通过hash表记录每个字符最晚一次出现的索引位置,用来求i
  • 遍历到 s[j]时,可通过访问哈希表 dic[s[j]] 获取最近的相同字符的索引 i。

    代码

    1. class Solution {
    2. public int lengthOfLongestSubstring(String s) {
    3. Map<Character, Integer> dic = new HashMap<>();
    4. int res = 0, temp = 0, len = s.length();
    5. for (int j = 0; j < len; j++) {
    6. // 获取索引 i
    7. int i = dic.getOrDefault(s.charAt(j), -1);
    8. // 更新哈希表
    9. dic.put(s.charAt(j), j);
    10. //执行转移方程
    11. temp = temp < j - i ? temp + 1 : j - i;
    12. res = Math.max(res, temp);
    13. }
    14. return res;
    15. }
    16. }