Longest Substring Without Repeating Characters---题解

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.

https://leetcode.com/problems/longest-substring-without-repeating-characters/description/

总结:
1、当遇到重复的字符时,更换起始位置应该在这个重复字符第一次出现的位置,而不是第二次出现的位置。
2、回顾了下string的用法。

提交代码:

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int sub[500];
        int len=0,newlen=0;
        int n=s.length();
        memset(sub,-1,sizeof(sub));
        for(int i=0;iif(sub[(int)s[i]]==-1)
            {
                newlen++;
                sub[(int)s[i]]=i;
                //cout<<(int)s[i]<<" "<<sub[(int)s[i]]<
            }
            else
            {
                i=sub[(int)s[i]]--;
                len=max(len,newlen);
                newlen=0;
                memset(sub,-1,sizeof(sub));
            }
        }
        len=max(len,newlen);
        //printf("%d\n",len);
        return len;
    }
};

你可能感兴趣的:(字符串)