码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 3. Longest Substring Without Repeating Characters

时间:2016-09-27 11:29:14      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:

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

给出一种方法:

例如: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)。

 

leetcode 3. Longest Substring Without Repeating Characters

标签:

原文地址:http://www.cnblogs.com/zyqBlog/p/5911949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!