給定一個字符串 s
,請你找出其中不含有重復字符的 最長子串 的長度
題解: 就是在一個字符串中,子串中沒有重復的字符
例如:abda,那么最長是abd,bda都可以
解題圖解:
采用雙指針進行操作
代碼
int length = s.length(); List<Character> list = new ArrayList<>(); int left =0; int slength =0; int keylength =0; HashMap<Character, Integer> map = new HashMap<>(); for (int i =0 ;i<length -1;i++){ list.add(s.charAt(i)); Integer integer = map.get(s.charAt(i)); if (integer == null){ slength =slength+1; map.put(s.charAt(i),i); }else{ keylength =i-left; slength =slength-keylength>0?slength:keylength; left++; } } return slength;