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


    一、题目描述

    请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

    示例 1:

    输入: "abcabcbb"
    输出: 3
    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
    示例 2:

    输入: "bbbbb"
    输出: 1
    解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
    示例 3:

    输入: "pwwkew"
    输出: 3
    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
      请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

    二、题目难度:中等

    三、题解

    方法一:使用一个set来维护当前不重复的字符

    class Solution {
        public int lengthOfLongestSubstring(String s) {
            int n = s.length();
            int left = 0;
            int right = 0;
            Set<Character> set = newLinkedHashSet<>();
    int res = 0;
            while(right < n){
                char c = s.charAt(right);
                while(set.contains(c)){
                    set.remove(s.charAt(left++));
                }
                set.add(c);
                right++;
                res = Math.max(res,right - left);
            }
            return res;
        }
    }

  • 相关阅读:
    mac 环境下adb的安装
    iOS开发Swift版本
    UILabel-Swift
    Android应用上架
    Android应用开发
    andriod
    Android 6.0 更新包与已安装应用的签名不一致
    苹果手机怎么录屏 iOS12设置录屏
    Siri语音唤醒的开启与语音矫正
    Git的工作流程
  • 原文地址:https://www.cnblogs.com/ttzz/p/14546480.html
Copyright © 2020-2023  润新知