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

LeetCode 3 Longest Substring Without Repeating Characters

时间:2015-07-21 12:54:53      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:leetcode   longest substring wi   

Given a string,find the length of the longest substring without repeating characters. Forexample, the longest substring without repeating letters for"abcabcbb" is "abc", which the length is 3. For"bbbbb" the longest substring is "b", with the length of 1.

解题思路:适合用哈希来做,因为对于单个字符(值为0-255)并且没有重复的。所以定义一个256vector,并且初始化为-1。用这个哈希表来记录第i个字符上一次出现在字符串的哪个位置上,一次都没有出现时就是-1,即初始化的数。定义一个start,用来记录无重复出现字符的起点位置,这个题的关键就在于如何更新这个start

如果没有重复元素,则start一直不用更新,则hash[s[i]]一定大于start,但是当出现重复元素的时候,此时hash[s[i]]并不一定大于startegabba,此时start也不用更新,因此要想更新start,只有在hash[s[i]] >=start的时候。


1.	class Solution {  
2.	public:  
3.	    int lengthOfLongestSubstring(string s) {  
4.	        vector<int> hash(256,-1);  
5.	        int ret = 0;  
6.	        int start = 0;  
7.	        for(int i = 0;i != s.size();++i)  
8.	        {  
9.	            if(hash[s[i]] >= start)  
10.	                start = hash[s[i]] + 1;  
11.	            ret = std::max(ret,i - start + 1);  
12.	            hash[s[i]] = i;  
13.	        }  
14.	        return ret;  
15.	    }  
16.	};  


版权声明:本文为博主原创文章,未经博主允许不得转载。

LeetCode 3 Longest Substring Without Repeating Characters

标签:leetcode   longest substring wi   

原文地址:http://blog.csdn.net/csdnjack_/article/details/46982525

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