Leetcode 3. Longest Substring Without Repeating Characters

    科技2026-04-02  9

    class Solution { public: int lengthOfLongestSubstring(string s) { /*unordered_set<char>occu; int j=-1; int ans=0; int length=s.size(); for(int i=0;i<length;++i) { if(i>0) { occu.erase(s[i-1]); } while(j+1<length&&!occu.count(s[j+1])) { occu.insert(s[j+1]); ++j; } ans=max(ans,j-i+1); } return ans;*/ std::vector<int> occurNum(256,-1); int i=0; int j=0; int ans=0; int length=s.size(); while(i<length) { if(occurNum[s[i]]!=-1) { ///因为occurNum中记录的是s[i]字符最近一次出现的索引位置, ///所以在这里更新的时候需要将该索引加1,表示位置为最后出现字符s[i]字符的 ///下一个位置开始算起 j=max(j,occurNum[s[i]]+1); } occurNum[s[i]]=i; ///字符串数组的长度是两个索引之差加1 ans=max(ans,i-j+1); ++i; } return ans; } };
    Processed: 0.017, SQL: 9