Leetcode #3. Longest Substring Without Repeating Characters

来源:互联网 发布:网狐棋牌源码 编辑:程序博客网 时间:2024/06/08 06:44

题意:对于给定的字符串,返回其最大不重复字串的长度。如对于abcabcbb返回3。

题型:辅助变量;哈希表。

解法:定义一个包含所有ascii字符数量的数组m[128],初始化为0;

定义三个变量count、pre和max,初始化为0;其中count代表包括当前元素的最小不重字串;pre指当前元素上一次出现的位置;max代表当前元素为止出现的最大不重字串的大小。

遍历字符串,只要没有出现重复的元素,count就加1,同时将当前元素对应的数组位置更新为当前位置;如果出现重复元素,则:更新max、count和pre。然后再次对count加1,更新当前元素的数组值。

最后返回值时要注意返回的是max和count中的较大者,因为可能出现max未更新就遍历完的情况:当整个string元素不重复时。

代码:

int lengthOfLongestSubstring(string s) {        int m[128] = {0};        int count = 0, pre = 0, max = 0;        int cur;        for (int i = 0; cur = s[i]; i++)        {            if (pre < m[cur])             {                max = (max < count) ? count : max;                count = i-m[cur];                pre = m[cur];            }            count++;            m[cur] = i+1;        }        return max > count ? max : count;}

阅读全文
0 0
原创粉丝点击