[LeetCode]3. 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.

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int sizeOfS = s.size();
        if(sizeOfS <= 1)
            return sizeOfS;
        int nowLen = 0,iOfS = 0,longestLen = 0;
        string subStr;
        for(int i = 0; i < sizeOfS; ++i){ 
            auto iOfR = subStr.find(s[i]);//子串中和s[i]重複的位置
            if(iOfR == string::npos){
                subStr += s[i];
                ++ nowLen;
            }
            else{
                nowLen = 0;
                //由於循環前i還會++,所以這裏i定位於重複字母在s中的下標
                i = iOfS +iOfR;
                iOfS = i + 1;
                subStr = "";
            }
            if(nowLen > longestLen)
                longestLen = nowLen;
        }
       return longestLen;
    }
};
發佈了37 篇原創文章 · 獲贊 7 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章