zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    多线程-共享全局变量问题
    多线程-共享全局变量
    线程-注意点
    线程
    最短网络Agri-Net
    2455 繁忙的都市
    2597 团伙
    5929 亲戚
    5969 [AK]刻录光盘
    JavaEE Tutorials (6)
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/5452968.html
Copyright © 2011-2022 走看看