双指针之无重复字符最长子串

力扣第三题

package com.zhang.reflection.面试.算法模版.双指针;
import java.util.HashSet;
import java.util.Set;
/**
 * 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
 *
 * s = "abcabcbb"
 *
 * 3
 */
public class 双指针 {
    public int lengthOfLongestSubstring(String s) {
        //Set集合用来保存已经存在的字符串
        Set<Character> sets=new HashSet<>();
        int left=0;  //左指针
        int right=0;  //右指针
        int result=0;
        while(right<s.length()){
            char ch=s.charAt(right++);
            while(sets.contains(ch)){
                sets.remove(s.charAt(left));
                left++;
            }
            sets.add(ch);
            result=Math.max(result,right-left);
        }
        return result;
    }
}
全部评论

相关推荐

头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务