题目描述:寻找一个字符串的最大子串(不包含重复元素)
解题思路:建立一个256位大小的整型数组来代替哈希表,这样做的原因是ASCII表共能表示256个字符,所以可以记录所有字符。
class Solution { public: int lengthOfLongestSubstring(string s) { if(s.size() == 0) return 0; vector<int> len(256, -1); int maxLen = 0; int start = -1; for(int i = 0; i < s.size(); ++i) { if(len[s[i]] > start) start = len[s[i]]; len[s[i]] = i; maxLen = max(maxLen, i - start); } return maxLen; } };python 实现:
class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ start = maxLen = 0 usedChar = {} for i in range(len(s)): if s[i] in usedChar and start <= usedChar[s[i]]: start = usedChar[s[i]] + 1 else: maxLen = max(maxLen, i - start + 1) usedChar[s[i]] = i return maxLen