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) {
if (s.empty()) return 0;
int maxl = 0, start = -1;
vector<int> dict(256, -1);
for (int i = 0; i != s.length(); ++i) {
//判断字符是否在start之后出现,出现过表示有重复字符,更新start
if (dict[s[i]] > start)
start = dict[s[i]];
//更新下标
dict[s[i]] = i;
//更新最大值
maxl = max(maxl, i-start);
}
return maxl;
}
};