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

[Leetcode] Longest Substring Without Repeating Characters

时间:2015-08-12 23:02:08      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

这道题目使用的方法具有非常大的普遍性,实际上是两个指针。

一个指针记录当前所记录的子串的开始,另一个是当前遍历的位置,如果产生了重复,那么需要进行修正,实际上是对子串进行收缩。

从当前子串开始位置到重复位置,重置相应的字符为违被搜索状态。在收缩之前需要进行,最长子串长度的更新。

 

 1 public class Solution {
 2     public int lengthOfLongestSubstring(String s) {
 3         int startindex[]=new int[256];
 4         for(int i=0;i<256;i++){
 5             startindex[i]=-1;
 6         }
 7         int maxlength=0;
 8         int curlength=0;
 9         int countstart=0;
10         for(int i=0;i<s.length();i++){
11             char c=s.charAt(i);
12             int index = (int) c;
13             if(startindex[index]==-1){
14                 startindex[index]=i;
15                 curlength++;
16             }else{
17                 maxlength = curlength>maxlength?curlength:maxlength;
18                 //clear some
19                 for(int k=countstart;k<startindex[index];k++){
20                     startindex[(int)(s.charAt(k))]=-1;
21                 }
22                 curlength=i-startindex[index];//not the maximum
23                 countstart=startindex[index]+1;
24                 startindex[index]=i;
25             }
26             if(i==s.length()-1){
27                 if(curlength>maxlength){
28                     maxlength=curlength;
29                 }
30             }
31         }
32         return maxlength;
33     }
34 }

 

[Leetcode] Longest Substring Without Repeating Characters

标签:

原文地址:http://www.cnblogs.com/deepblueme/p/4725580.html

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