0

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

示例 1:

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

示例 2:

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

示例 3:

输入: "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。
     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
回答后才能看到答案和解析
lovego 35
5年前上传
3个回答

class Solution { public int lengthOfLongestSubstring(String str) { char[] charArray = str.toCharArray(); List integers = new ArrayList<>(charArray.length); List temp = new ArrayList<>(); int count ; for(int i = 0 ; i < charArray.length ; i++){ temp.add(charArray[i]); count = 1; for(int j = 1 ; j < charArray.length-i ; j++){ if(temp.contains(charArray[i+j]))break; else{ count++; temp.add(charArray[i+j]); } } integers.add(count); temp.clear(); } if(integers.size() == 0)return 0; count = integers.stream().max(Comparator.comparingInt(Integer::intValue)).get(); System.out.println(count); return count; } }

大家多多指教 ;)

letsgo 48
5年前回答
function test(str, maxlength) {
    const a = str[0];
    const arr1=[];
    const arr2=[];
    arr2.push(a);
    for(let i = 1; i < str.length; i++){
        arr1[i-1] = str[i];
    }
    if(arr1.length === 0) {
        console.log(maxlength);
    }
    for(let i = 0; i< arr1.length; i++) {
        if (arr2.includes(arr1[i])) {
            if(arr2.length > maxlength){
                test(arr1.join(''), arr2.length);
            } else {
                test(arr1.join(''), maxlength);
            }
            break;
    } else {
        arr2.push(arr1[i]);
    }
    if (i === arr1.length - 1) {
        maxlength = maxlength > arr1.length + 1 ? maxlength : arr1.length + 1;
        console.log(maxlength)
    }

}

} test('abbcddefghijiklm', 0)

5年前回答
我的回答