美文网首页
2019-07-17 leetcode lengthOfLong

2019-07-17 leetcode lengthOfLong

作者: mister_eric | 来源:发表于2019-07-18 12:07 被阅读0次

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

    示例 1:

    输入: "abcabcbb"

    输出: 3

    解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。

    示例 2:

    输入: "bbbbb"

    输出: 1

    解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。

    示例 3:

    输入: "pwwkew"

    输出: 3

    解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。

         请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

    import java.util.HashSet;

    class LongestNoRepeatString {

        public static void main(String[] args) {

            System.out.println("abcabcbb : " + lengthOfLongestSubstring("abcabcbb"));

            System.out.println("bbbbb : " + lengthOfLongestSubstring("bbbbb"));

            System.out.println("pwwkew : " + lengthOfLongestSubstring("pwwkew"));

        }

        public static int lengthOfLongestSubstring(String s) {

            HashSet<Character> hashset = new HashSet<>();

            char[] ss = s.toCharArray();

            int res = 0;

            int l = 0, r = -1;

            while(l < ss.length){

                res = Math.max(res, r - l + 1);

                if( r + 1 < ss.length && !hashset.contains(ss[r+1])){

                    hashset.add(ss[++r]);

                }else {

                    hashset.remove(ss[l++]);

                }

            }

            return res;

        }

    }

    相关文章

      网友评论

          本文标题:2019-07-17 leetcode lengthOfLong

          本文链接:https://www.haomeiwen.com/subject/vkaklctx.html