zoukankan      html  css  js  c++  java
  • 3. Longest Substring Without Repeating Characters

    /**
     * 3. Longest Substring Without Repeating Characters
     * https://leetcode.com/problems/longest-substring-without-repeating-characters/description/
     * https://www.youtube.com/watch?v=3IETreEybaA
     *
     * 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.
     * */
    class Solution {
        fun lengthOfLongestSubstring(s: String): Int {
            //1.
            //time complexity:O(n*n)
            //space complexity:O(n)
            /*val length = s.length
            for (i in 0 until length) {
                val sb = StringBuilder()
                var subI = i
                while (subI < length) {
                    if (sb.toString().indexOf(s[subI]) == -1) {
                        //if not found the char in substring, add it up
                        sb.append(s[subI])
                    } else {
                        break
                    }
                    subI++
                }
                result = Math.max(result, sb.toString().length)
            }*/
    
            //2.
            //use sliding window and ArrayList to reduce the time complexity to O(n)
            var max = 0
            var left = 0
            var right = 0
            val length = s.length
            val set = ArrayList<Char>(length)
            println(s)
            while (right < length) {
                if (!set.contains(s[right])){
                    set.add(s[right])
                    right++
                    max = Math.max(max,set.size)
                } else {
                    set.remove(s[left])
                    left++
                }
            }
            return max
        }
    }
  • 相关阅读:
    linux安装篇之mongodb安装及服务自启动配置
    Linux下启动mongodb
    java 实现 图片与byte 数组互相转换
    用java imageio调整图片DPI,例如从96调整为300
    StringRedisTemplate操作redis数据
    Docker 更换国内的Hub源
    2、Docker 基础安装和基础使用 一
    Centos 6.x Openssh 升级 7.7p1 版本
    1、Docker 简介
    2. Python环境安装
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12435065.html
Copyright © 2011-2022 走看看