题目:
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; } };
时间: 2024-10-17 02:37:57