leetcode-03-无重复字符的最长子串

目录

题目

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

示例 1:

输入: s = "abcabcbb"
输出: 3 
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3

示例 2:

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

示例 3:

输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

示例 4:

输入: s = ""
输出: 0

提示:

  • 0 <= s.length <= 5 * 104
  • s 由英文字母、数字、符号和空格组成

题解:

class Solution3 {
    public int lengthOfLongestSubstring(String s) {
        ArrayList<Character> res = new ArrayList<>();
        int maxLength = 0;
        char[] charArray = s.toCharArray();
        for (char c : charArray) {
            if (!res.contains(c)) {
                res.add(c);
                continue;
            }

            if (maxLength < res.size()) {
                maxLength = res.size();
            }

            do {
                res.remove(0);
            } while (res.contains(c));

            res.add(c);
        }
        return Math.max(maxLength, res.size());
    }
}

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦