3:Longest Substring Without Repeating Characters【哈希】【兩指針】【字符串】

題目鏈接:click~

/*題意:一個字符串,求不含有重複字母的最長子串的長度*/

/**
 *思路: 用v[]記錄字母出現的位置。掃描字符串時,如果該字符
 *      已經出現過,且出現的位置在開始位置之前,更新開始位置。
 */


class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        vector<int> v(256, -1);
        int start = 0;//開始位置
        int maxLen = 0;
        int len = s.size();
        for(int i = 0; i < len; i ++) {
            int k = s[i];
            if(v[k] != -1 && start <= v[k]) {//字符已經出現過且在開始位置之前
                start = v[k] + 1;//開始位置+1
            }
            v[k] = i;
            maxLen = max(maxLen, i-start+1);
        }
        return maxLen;
    }
};


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