(字符串哈希表)找到字符串中不重復出現字符的最長子串長度


  • 題目:
    給定一個字符串,找到不重復字符的最長子字符串的長度。 例如,對於“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;
        }
    };

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM