【LeetCode热题100】——3. 无重复字符的最长子串

【LeetCode热题100】——3. 无重复字符的最长子串

解题思路:
本题使用滑动窗口的思想就行求解。
题目要求找出其中不含有重复字符的最长子串的长度,基本思路为对字符串进行遍历,分别找出第一个字符开始最长的无重复字符的字符串,并记录其长度。第二个字符开始最长的无重复字符的字符串,并记录其长度。。。直至遍历整个字符串。

记录这些长度的最大值返回。

如何找出每次循环的最大无重复字符串: 使用HashSet集合,HashSet集合的特点时无序无重复,将字符add()到集合中,如果集合的size未增加,则说明本字符和前面的字符重复。也可以使用set.contains()判断该字符是否在集合中,如果不在,则添加入集合中,长度+1,若字符在该集合中,则break,表示已有重复。

代码

public class Solution003 {
    public int lengthOfLongestSubstring(String s) {
        if (s.length() <= 0) {
            return 0;
        }
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            HashSet<Character> set = new HashSet();
            int x = 0;
            for (int j = i; j < s.length(); j++) {
                char c = s.charAt(j);
                set.add(c);
                if (set.size() == x + 1) {
                    x = x + 1;
                } else {
                    break;
                }
            }
            if (count < x) {
                count = x;
            }
        }
        return count;
    }
}

此为个人刷题笔记,如有错误欢迎指正,感谢!!

你可能感兴趣的:(LeetCode热题100,java,leetcode)