您的位置:首页 > 其它

Longest Substring Without Repeating Characters

2015-09-05 11:13 363 查看
class Solution {
public:

int lengthOfLongestSubstring(string s) {
// for ASCII char sequence, use this as a hashmap
vector<int> charIndex(256, -1);
int longest = 0, m = 0;

for (int i = 0; i < s.length(); i++) {
m = max(charIndex[s[i]] + 1, m);    // automatically takes care of -1 case//保证每次都找到不同的序列的第一个序号
charIndex[s[i]] = i;
longest = max(longest, i + 1- m);

}

return longest;
}

};

charIndex[s[i]]就是上个相同同的索引号的最大一个

假设不同的序列长度为[m,i],则当新出现一个不在序列里时,longest加1通过使序列号自增 ;当遇到相同时,则m要进行更新到下一个不含相同字符的第一个,并且新的不重复段也变成i+1-m。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: