当前位置: 面试刷题>> 无重复字符的最长子串(经典算法150题)


题目描述

题目:无重复字符的最长子串

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

示例 1:

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

示例 2:

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

示例 3:

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

PHP 示例代码

function lengthOfLongestSubstring($s) {
    $maxLength = 0;
    $start = 0;
    $charMap = array();

    for ($i = 0; $i < strlen($s); $i++) {
        $char = $s[$i];
        if (isset($charMap[$char]) && $charMap[$char] >= $start) {
            $start = $charMap[$char] + 1;
        }
        $charMap[$char] = $i;
        $maxLength = max($maxLength, $i - $start + 1);
    }

    return $maxLength;
}

// 示例用法
echo lengthOfLongestSubstring("abcabcbb"); // 输出: 3

Python 示例代码

def lengthOfLongestSubstring(s):
    maxLength = 0
    start = 0
    charMap = {}

    for i, char in enumerate(s):
        if char in charMap and charMap[char] >= start:
            start = charMap[char] + 1
        charMap[char] = i
        maxLength = max(maxLength, i - start + 1)

    return maxLength

# 示例用法
print(lengthOfLongestSubstring("abcabcbb"))  # 输出: 3

JavaScript 示例代码

function lengthOfLongestSubstring(s) {
    let maxLength = 0;
    let start = 0;
    const charMap = {};

    for (let i = 0; i < s.length; i++) {
        const char = s[i];
        if (charMap[char] >= start) {
            start = charMap[char] + 1;
        }
        charMap[char] = i;
        maxLength = Math.max(maxLength, i - start + 1);
    }

    return maxLength;
}

// 示例用法
console.log(lengthOfLongestSubstring("abcabcbb")); // 输出: 3

以上三种语言的示例代码均实现了找出给定字符串中无重复字符的最长子串的长度。在实际面试中,根据面试官的要求,你可能需要选择其中一种语言进行编写。

推荐面试题