1. 程式人生 > >leetcode Longest Substring Without Repeating Characters

leetcode Longest Substring Without Repeating Characters

思路:

定義變數:exist[256]={false},表示字元沒有出現過,當exist[s[j]]=true時表示字元已經出現過;定義i和j,初始時i表示字串的起始,j持續增大,同時exist[s[j]]=true,當發現s[j]已經出現過,那麼移動i,知道s[i]=s[j],並把之前的exist[s[i]]變為false

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int length=s.size();
        int maxlen=0;
        int i=0,j=0;
        bool exist[256]={false};
        for(;j<length;j++)
        {
            if(exist[s[j]])
            {
                maxlen=max(maxlen,j-i);
                while(i<j)
                {
                    if(s[i]!=s[j])
                        exist[s[i]]=false;
                    else
                        break;
                    i++;
                }
                i++;
            }
            else
            {
                exist[s[j]]=true;
            }
        }
        maxlen=max(maxlen,length-i);
        return maxlen;
    }
};