给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
滑动窗口法
HashSet来判断重复字符 //.contains();
import java.util.HashSet; import java.util.Set; public class Q3 { public int lengthOfLongestSubstring(String s) { int maxLength = 0; //滑动窗口法 Set<Character> occ = new HashSet<>(); int rk = -1;//右指针 for (int i = 0; i < s.length(); i++) { if (i != 0) { occ.remove(s.charAt(i-1)); } //右移 右指针,直到集合出现重复字符 while (rk+1 < s.length() && !occ.contains(s.charAt(rk+1))) { occ.add(s.charAt(rk+1)); ++rk; } //更新maxLength if ((rk-i+1) > maxLength) maxLength = rk-i+1; } // end for return maxLength; } }