1.代码
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int length1 = s.length();
int maxn = 0;
int leftl = 0;
int a[128];
fill(begin(a), end(a), -1);
for (int rightl = 0; rightl < length1; ++rightl) {
char currentChar = s[rightl];
if (a[int(currentChar)] >= leftl) {
leftl = a[int(currentChar)] + 1;
}
a[int(currentChar)] = rightl;
maxn = max(maxn, rightl - leftl + 1);
}
return maxn;
}
};
2.思路
维护一个始终没有重复字符的子串。定义了一个数组来记录ASCII码对应的字符在子串中出现的位置,逐次将子串的右端后移,在数组对应项记录当前位置,如果对应的字符出现位置在当前子串中,则还需把子串的左端更新为数组对应项记录的位置。每一次更新数组后长度的最大值就是所求的最长子串长度。