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.
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int sizeOfS = s.size();
if(sizeOfS <= 1)
return sizeOfS;
int nowLen = 0,iOfS = 0,longestLen = 0;
string subStr;
for(int i = 0; i < sizeOfS; ++i){
auto iOfR = subStr.find(s[i]);//子串中和s[i]重複的位置
if(iOfR == string::npos){
subStr += s[i];
++ nowLen;
}
else{
nowLen = 0;
//由於循環前i還會++,所以這裏i定位於重複字母在s中的下標
i = iOfS +iOfR;
iOfS = i + 1;
subStr = "";
}
if(nowLen > longestLen)
longestLen = nowLen;
}
return longestLen;
}
};