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
        }
    }
  • 相关阅读:
    windows下安装nginx
    java 32位MD5加密的大写字符串
    eclipse运行maven的jetty插件内存溢出
    Phpstorm Alt+Enter 自动导入类
    CSS 再学习,文本处理
    1406 data too long for column 'content' at row 1
    tp5.1报错 页面错误!请稍后再试
    lnmp升级php
    Tp5,Service使用
    CSS再学习 之背景色 背景图片
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12435065.html
Copyright © 2011-2022 走看看