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

    本问题是求最长不重复子串。

    给出一种方法:

    例如:aplsdfgsjiuk,设置一个最长子串的起始位和结束位,a为起始位,b为结束位,当遍历aplsdfg时,下一位s重复,所以可以从d为起始位置在遍历。

    public class Solution {
        public int lengthOfLongestSubstring(String s) {
            
             boolean []arr = new boolean[256];
             for(int i = 0; i < 256; i++)
             {
                 arr[i] = false;
             }
             
             int a = 0;//记录开始位置
             int b = 0;//记录子串的结束位置 
             int maxlength = 0;
             
             while(b < s.length())
             {
                 if(!arr[s.charAt(b)])
                 {
                     arr[s.charAt(b)] = true;// 访问过了 
                     b++;
                 }
                 
                 else
                 {
                     while(s.charAt(a) != s.charAt(b))
                     {
                         arr[s.charAt(a)] = false;
                         a++;
                     }
                     
                     a++;
                     b++;
                     
                 }
                 
                 maxlength = (maxlength > (b-a))? maxlength:(b-a);
             }
             
             return maxlength;
            
            
        }
    }

      时间复杂度为O(n)。

  • 相关阅读:
    几个基本trick
    CSP2019 树上的树 口胡
    To do List
    对代码风格的探索(持续更新)
    我回来了。
    年度悲剧
    最短路
    平衡树
    线段树-模板
    jmeter断言之JSON Assertion
  • 原文地址:https://www.cnblogs.com/zyqBlog/p/5911949.html
Copyright © 2011-2022 走看看