LeetCode算法题目:Longest Substring Without Repeating Characters

来源:互联网 发布:淘宝的等级怎么提升 编辑:程序博客网 时间:2024/05/17 22:43
题目描述:
Given a string, find the length of the longest substring without repeating characters.
Examples:
Given "abcabcbb", the answer is "abc", which the length is 3.
Given "bbbbb", the answer is "b", with the length of 1.

Given "pwwkew", the answer is "wke", with the length of 3. Note that the answer must be a substring, "pwke" is a subsequence and not a substring.

分析:

假设子串里含有重复字符,则父串里肯定含有重复字符,从左往右扫描字符串,当遇到重复字母时,以上一个重复字母后一位为起始位置开始搜索,一直到最后一个字母。


代码实现:

class Solution {public:    int lengthOfLongestSubstring(string s) {        const int ASCII_MAX = 255;        int last[ASCII_MAX];        int start = 0;        fill(last, last + ASCII_MAX, -1);        int max_len = 0;        for (int i = 0; i < s.size(); i++) {        if (last[s[i]] >= start) {         max_len = max(i - start, max_len);         start = last[s[i]] + 1;        }       last[s[i]] = i;        }        return max((int)s.size()-start, max_len);    }};

1 0
原创粉丝点击