vs2013下執行
#include #include #include #includeusing namespace std;
class solution , res = 0, left = 0;
for (int i = 0; i= 2);
string result;
for (int i = 1; i < input.length() - 1; i++)
i++;
} else
} return result;
}int main()
return 0;
}
該題我看了很多博文,最難理解的語句是:
else
left = m[s[i]];
m[s[i]
]= i +
1;
這個語句什麼意思呢?就是說,更新字元在hash表中的值,也就是說,下一次碰到「滑動視窗」中有和i指標所指的字元相等的時候,我們首先更新left;其次,我們更新hash表中該值為i+1。
大家想沒想過為什麼更新m[s[i]] 的值為i+1呢?
我們試想,我們把這個m[s[i]] 的值更新為i+1,能達到什麼效果?那就是:下次我們可以直接把left定位到m[s[i]]所指的下乙個位置了!!!我們要的不就是這個效果嗎?
看下圖:
正常來說,到這了,我們想做的是什麼?是不是就是想把left移動到下乙個位置?也就是把left指標移動到m[a]的值的位置。所以,m[s[i]]的值就是為了記錄下一次出現這種有相同的情況,left應該指向的位置!!!
接著看下圖:
所以我們也就理解了,為什麼m[s[i]] = i + 1;因為我們要讓其指向下乙個位置!!!
leetcode 3 無重複的字串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...
leetcode 3 無重複字元的最長字元子串
堅持打卡!題目 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwk...
leetcode 3 最長無重複字串
3.longest substring without repeating characters 題面 given a string,find the length of the longest substring without repeating characters.給定字串,找到最長無重複字...