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;
        }
    }
  • 相关阅读:
    108.将有序数组转换成二叉搜索树
    剑指Offer 09.用两个栈实现队列
    215.数组中的第K个最大元素
    AcWing 845.八数码
    1.两数之和
    迷宫问题
    倒计时
    Redis 红包
    Redis
    EF Api 全套
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/5452968.html
Copyright © 2011-2022 走看看