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
        }
    }
  • 相关阅读:
    成功熬了四年还没死?一个IT屌丝创业者的深刻反思
    史氏语录
    WEB安全攻防学习内容
    从程序员的角度谈创业三年
    Windows2008 R2修改3389端口教程
    Win2008R2 zip格式mysql 安装与配置
    制作支持UEFI PC的Server2008 R2系统安装U盘
    郎科U208(主控 PS2251-50 HYNIX H27UCG8T2MYR)量产还原
    自用有线IP切换
    自动配置IP地址.bat
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12435065.html
Copyright © 2011-2022 走看看