无重复字符的最长子串
    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
    示例 1:
    输入: “abcabcbb”
    输出: 3
    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
    示例 2:
    输入: “bbbbb”
    输出: 1
    解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
    示例 3:
    输入: “pwwkew”
    输出: 3
    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
    请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
    思路:滑动窗口解法,定义一个做指针作为窗口左边界,定义一个右指针作为窗口有边界,遍历当前字符串,当出现重复时,记录当前重复字符的位置及当前窗口的长度,然后从重复字符下一个位置作为左边界,继续向右遍历。

    class Solution {
        public int lengthOfLongestSubstring(String s) {
            //1.定义一个LinkedList存放当前遍历的字符,若出现冲突,则从0移除到当前重复元素的位置。
            LinkedList linkedList = new LinkedList<>();
            //2.获取字符串的长度
            int strLen = s.length(),count = 0;
    
            for(int i=0; i<strLen; i++){
                Character c = s.charAt(i);
                if(!linkedList.contains(c)){// 当前链表中包含此元素
                    linkedList.add(c);
                    count = Math.max(count,linkedList.size());
    
                }else{// 放入失败,则从0移除到当前重复元素的位置,即窗口起始位置从第一个重复位置开始
                    int index = linkedList.indexOf(s.charAt(i));
                    for(int j=0; j<=index; j++){
                        linkedList.remove();
                    }
                    linkedList.add(c);
                }
            }
            return count;
        }
    }