題目:
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.
思路大概是建立一個映射表,遍歷整個字符串,如果字符對應映射表的index值為-1,說明字符沒出現過,計算長度大小,更新maxLength。如果字符出現過,那么就重新開始計算。遍歷后得到最后結果。
class Solution { public:int lengthOfLongestSubstring(string s) {int indexOfChar[256];memset(indexOfChar, -1, sizeof(indexOfChar));int maxLength = 0;int initIndex = -1;for (int i = 0; i < s.length(); ++i){if (indexOfChar[s[i]] > initIndex){initIndex = indexOfChar[s[i]];}indexOfChar[s[i]]=i;maxLength=max(maxLength, i - initIndex);}return maxLength;} };
?