剑指Offer-48最长不含重复字符的子字符串

public int lengthOfLongestSubstring(String s) {
    Map<Character, Integer> dic = new HashMap<>();
    int res = 0;
    int tmp = 0;
    for(int j = 0; j < s.length(); j++) {
        // 获取索引 i
        int i = dic.getOrDefault(s.charAt(j), -1);
        // 更新哈希表
        dic.put(s.charAt(j), j);
        // dp[j - 1] -> dp[j]
        if (tmp < j - i){
            tmp += 1;
        }else {
            tmp = j - i;
        }
        // max(dp[j - 1], dp[j])
        res = Math.max(res, tmp);
    }
    return res;
}

猜你喜欢

转载自blog.csdn.net/a792396951/article/details/114077371