每日一題(day3)

Leetcode003

Longest Substring Without Repeating Characters問題

int lengthOfLongestSubstring(string s) {
        int table[256];
        int curlen = 0, maxlen = 0, curhead = 0, maxhead = 0;
        memset(table, -1, sizeof(table));
        for (int i = 0; i < s.length(); i++)
        {
            if (table[s[i]]<0)
            {
                table[s[i]] = i;
                if (++curlen > maxlen)
                {
                    maxlen = curlen;
                    maxhead = curhead;
                }

            }
            else
            {
                curlen -= table[s[i]] - curhead;
                for (int j = curhead; j < table[s[i]]; j++)
                    table[s[j]] = -1;
                curhead = table[s[i]] + 1;
                table[s[i]] = i;
            }
        }
        return maxlen;
    }

採用技巧:利用數組記錄重複字符出現的最終位置,-1表示未出現
注意問題:長度更新與數組內容替換

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章