• 3. Longest Substring Without Repeating Characters


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

    Examples:

    Given "abcabcbb", the answer is "abc", which the length is 3.

    Given "bbbbb", the answer is "b", with the length of 1.

    Given "pwwkew", 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.

    public class Solution {
        public int lengthOfLongestSubstring(String s) {
            int dp[] = new int[128]; //indicated the latest appearance of 128 ASCII letter
            int start = 0; //start position of current traverse
            int maxLength = 0;
            int curLength = 0;
            for(int i = 0; i < dp.length; i++){ //不能使用int i:a, 因为遍历的i会被改变值
                dp[i] = -1; //initialized as -1
            }
            
            for(int i = 0; i < s.length(); i++){
                if(dp[s.charAt(i)] < start) { //haven't repeated in the current traverse
                    dp[s.charAt(i)]=i;
                }
                else{ //repeat occurs
                    if(i-start > maxLength){
                        maxLength = i-start;
                    }
                    //reset
                    start = dp[s.charAt(i)]+1;
                    dp[s.charAt(i)] = i;
                }
            }
            
            if(s.length()-start > maxLength){ //final traverse substring
                maxLength = s.length()-start;
            }
            return maxLength;
        }
    }
  • 相关阅读:
    最详细的 paypal 支付接口开发--Java版
    Java IO--NIO(二)
    Java IO--NIO(一)
    Java IO--BIO
    ForkJoinPools
    ScheduledThreadPool
    SingleThread
    CachedThreadPool
    ForkJoinPool
    WorkStealingPool
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/5452968.html
Copyright © 2020-2023  润新知