3. 无重复字符的最长子串

3. 无重复字符的最长子串

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:

原题链接:

3. 无重复字符的最长子串
https://leetcode.cn/problems/longest-substring-without-repeating-characters/

完成情况:

3. 无重复字符的最长子串_第1张图片

解题思路:

参考代码:

package 西湖算法题解___中等题;

import java.util.HashSet;
import java.util.Set;

public class __3无重复字符的最长子串__01 {
	public static void main(String[] args) {

	}

	public int lengthOfLongestSubstring(String s) {
		Set<Character> Occur = new HashSet<Character>();
		int n = s.length();
		// 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
		int rk = -1,ans = 0;
		for (int i=0;i<n;i++){
			if (i !=0){
				//左指针向右移动一格,移出一个字符
				Occur.remove(s.charAt(i-1));
			}
			while (rk + 1 < n && !Occur.contains(s.charAt(rk+1))){
				//不断地移动右指针
				Occur.add(s.charAt(rk+1));
				rk++;
			}
			//第i到rk个字符是一个”极长“的无重复字符子串
			ans = Math.max(ans,rk-i+1);
		}
		return ans;
	}


}

你可能感兴趣的:(#,LeetCode题解,java学习,算法)