- 題目:
給定一個字符串,找到不重復字符的最長子字符串的長度。 例如,對於“abcabcbb”,不重復字母的最長子字符串是“abc”,長度為3.對於“bbbbb”,最長子字符串是“b”,長度為1。
- 思路:由於這個題目只要給出最長不重復子串的長度,所以代碼比較簡單。第一思路就是利用哈希表來進行操作。用字符當做鍵值,字符在串中的位置當做實值。用pre變量記錄字符第一次出現的位置,最大長度max就是利用當前位置減去pre就是當前最大長度了。
- 代碼
class Solution { public: int lengthOfLongestSubstring(string s) { map<char, int> mp; for (int i=0; i<s.length(); i++) mp[s[i]] = -1;//初始化哈希表 int pre = -1, Max = 0; for (int i=0; i<s.length(); i++){ pre = max(pre, mp[s[i]]); Max = max(Max, i-pre); mp[s[i]] = i; } return Max; } };