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
        }
    }
  • 相关阅读:
    USB子系统gadget analyse
    关于嵌入式的学习和职业发展
    编译JNI动态库so
    Linux串口编程
    i2c_get_clientdata和to_i2c_client 的使用获取平台设备
    Kbuild 编译系统分析
    解决QPST 出现的 "服务器正在运行" 的 下载错误.
    Msm 高通平台配置记录之一
    USB Skeleton driver 分析记录
    网站应用数据库相关 过滤类
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12435065.html
Copyright © 2011-2022 走看看