您的位置:首页 > 其它

(字符串哈希表)找到字符串中不重复出现字符的最长子串长度

2017-02-02 11:13 423 查看
题目:

给定一个字符串,找到不重复字符的最长子字符串的长度。 例如,对于“abcabcbb”,不重复字母的最长子字符串是“abc”,长度为3.对于“bbbbb”,最长子字符串是“b”,长度为1。


思路:由于这个题目只要给出最长不重复子串的长度,所以代码比较简单。第一思路就是利用哈希表来进行操作。用字符当做键值,字符在串中的位置当做实值。用pre变量记录字符第一次出现的位置,最大长度max就是利用当前位置减去pre就是当前最大长度了。

代码

class Solution {
public:
int lengthOfLongestSubstring(string s) {
map<char, int> mp;
for (int i=0; i<s.length(); i++)
mp[s[i]] = -1;//初始化哈希表
int pre = -1, Max = 0;
for (int i=0; i<s.length(); i++){
pre = max(pre, mp[s[i]]);
Max = max(Max, i-pre);
mp[s[i]] = i;
}
return Max;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐