zoukankan      html  css  js  c++  java
  • 无重复字符的最长子串

    问题描述:

    给定一个字符串,找出不含有重复字符的最长子串的长度。

    示例:

    给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。

    给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。

    给定 "pwwkew" ,最长子串是 "wke" ,长度是3。

    解题思路:

    使用集合set存储字符串s中第 i 到第 j-1 个不重复的字符,判断s中的第 j 个字符是否已经存在set中,若无添加至set

    否则,设第 j 个字符与set中的第k个字符相同,则删除set中 第 i 到 第k 的所有字符, 再将第j个字符添加至set中。

    如字符串s="abcdbcdd",set中已经存在字符:a、b、c、d,这时s中的第4个字符b与set中的第1个字符相同,则删去set中第0至第1的字符。并将第4个字符b加入set中。

    实现代码:

        public static int length(String s) {
    
            int max = 0;
            int i=0, j=0;
            Set<Character> set = new HashSet<>(s.length());
    
            while (i < s.length()) {
    
                if (set.contains(s.charAt(i))) {
                    set.remove(s.charAt(j++));
                }
                else {
                    set.add(s.charAt(i++));
                    max = Math.max(max, set.size());
                }
            }
            return max;
        }

    mark

  • 相关阅读:
    函数(五)——装饰器,递归调用,匿名函数
    函数(四)——装饰器
    函数(三)
    函数(二)
    函数(一)
    python基础(九)
    python基础(八)
    python基础(七)
    javaweb开发 idea ssm开发(二)
    PHP计算两个经纬度地点之间的距离
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9416304.html
Copyright © 2011-2022 走看看