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

LeetCode.003 Longest Substring Without Repeating Characters

时间:2015-07-18 21:14:22      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

Given a string, find the length of the longest substring without repeating characters. For example, 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.

题意

求一个字符串的最长子串(不含重复字符)的长度。

思路

maxlen保存当前最长子串的长度。用visit[]数组纪录某个字符在字符串中的位置,visit初始值全设置为-1.从字符串str的头部开始扫描,如果这个字符没有出现过,则在visit[]中记录这个字符的位置.如果出现重复字符,用last_start=visit[str[i]]记录该字符上一次出现的位置。比较i-last_start和maxlen的值并更新,扫描直到结束。

技术分享
 1 int lengthOfLongestSubstring(char* str) {
 2     int visit[256],maxlen=0,last_start = -1;
 3     memset(visit, -1, sizeof(visit));
 4     for(int i=0; i<strlen(str); i++)
 5     {
 6         if(visit[str[i]] != -1 && last_start<visit[str[i]]) last_start = visit[str[i]];
 7         if(maxlen<i-last_start)   maxlen=i-last_start;
 8         visit[str[i]] = i;
 9     }
10     return maxlen;
11 }
View Code

 

LeetCode.003 Longest Substring Without Repeating Characters

标签:

原文地址:http://www.cnblogs.com/madking/p/4657519.html

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