zoukankan      html  css  js  c++  java
  • 剑指 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;
        }
    }

  • 相关阅读:
    Eclipse中插件的运用
    AES加密解密 Java中运用
    DES加密解密 Java中运用
    Chrome中的插件运用
    JqueryEasyUI教程入门篇
    SEO入门教程
    屏幕取色工具
    gif处理
    java 实现序列化的两种方式
    重定向输出 > 1>&2 2>&1
  • 原文地址:https://www.cnblogs.com/ttzz/p/14546480.html
Copyright © 2011-2022 走看看