3. Longest Substring Without Repeating Characters

Description

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb"

Output: 3

Explanation: The answer is "abc", with the length of 3.

Example 2:

Input: "bbbbb"

Output: 1

Explanation: The answer is "b", with the length of 1.

Example 3:

Input: "pwwkew"

Output: 3

Explanation: The answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

code

class Solution {
    public int lengthOfLongestSubstring(String s) {
        int res = 0;
        int[] dp = new int[s.length() + 1];
        for (int i = 1; i <= s.length(); i++) {
            int realIndex = i - 1;
            int index = s.substring(realIndex - dp[i - 1], realIndex).lastIndexOf(s.charAt(realIndex));
            if (index == -1) dp[i] = dp[i - 1] + 1;
            else dp[i] = dp[i - 1] - index;
            res = Math.max(res, dp[i]);
        }
        return res;
    }
}

Last updated

Was this helpful?