[Leetcode] 3 - Longest Substring Without Repeating Characters

来源:互联网 发布:apache php exec 权限 编辑:程序博客网 时间:2024/04/28 00:42

原题链接:https://oj.leetcode.com/problems/longest-substring-without-repeating-characters/


做法为保持两个index,left和right,也就是通常提到的维持一个窗口。每次right前进1,如果当前right指向的char之前未出现,则继续前进。如果当前right指向的char出现过 (假设这个char称为c),则把left移动到之前出现c的index + 1的位置。之后继续增加right。

*注意字符不仅仅是英文字符


class Solution {public:    int lengthOfLongestSubstring(string s) {        vector<int> arr(256);        for (int i = 0; i < arr.size(); ++i) {            arr[i] = -1;        }                if (s.size() == 0) return 0;        int left = 0;        int right = 0;                int maxLen = 0;        while (right < s.size()) {            if (arr[s[right]] != -1) {                int newLeft = arr[s[right]] + 1;                while (left < newLeft) {                    arr[s[left]] = -1;                    left++;                }            } else {                maxLen = max(maxLen, right - left + 1);            }                        arr[s[right]] = right;            right++;        }                return maxLen;    }};


0 0
原创粉丝点击