每日一题(20210416)-无重复字符的最长子串

题目

力扣原题

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

 

示例 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 由英文字母、数字、符号和空格组成
复制代码

解题思路

未命名文件.jpg

Java代码

class Solution {
    public int lengthOfLongestSubstring(String s) {
        String str = "";
        int max = 0;
        char[]  c = s.toCharArray();
        for (int i = 0; i < c.length; i++) {
            while (str.contains(String.valueOf(c[i]))) {
                str = str.substring(1);
            }
            str = str + String.valueOf(c[i]);
            if (str.length() > max) {
                max = str.length();
            }
        }
        return  max;
    }
}
复制代码

Swift代码

class Solution {
  func lengthOfLongestSubstring(_ s: String) -> Int {
        var str = ""
        var max = 0
        for item in s {
//            if str.contains(item) {
//                str.remove(at: str.startIndex)
//            }
            
            
            while str.contains(item) {
                // 删除第一个
                str.remove(at: str.startIndex)
            }

            print(str)
            str = str + item.description
            if str.count > max {
                max = str.count
            }
        }
        return max
    }
   
}
复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享