Description:
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.
算法思想:思想类似[编程之美-02]字符串的包含问题 中的高效解法,向int数组进行哈希。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int maxLength = 0, count[128] = {0}, i, j;
for(i = 0, j = 0; i < s.length(); i++) {
if(count[s[i]] == 1) {
maxLength = max(maxLength, i-j);
while(s[j] != s[i]) {
count[s[j]] = 0;
j ++;
}
j ++;
}
else
count[s[i]] = 1;
}
return max(maxLength, i-j);
}
};