hashmap 的边遍历边存储

PS: Hashmap 的一边遍历边存储,可解决例如两数之和、 无重复最长子串问题等,代码为cpp格式。 

以无重复最长子串为例。

class Solution {
public:
    int lengthOfLongestSubstring(string s) {
    	unordered_map<char,int> hashmap;
    	int left = 0,max_len=0;
    	for (int i=0; i < s.size(); i++){
    		if (hashmap.find(s[i]) != hashmap.end()){
    			left = max(left, hashmap[s[i]] +1);  // 更新左边界
    		}
    		max_len = max(max_len,i-left+1) 
    		hashmap[s[i]] = i;  // 遍历的同时hashmap 加入字符对应位置
    	}
    	return max_len;

    }};

  

原文地址:https://www.cnblogs.com/E-Dreamer-Blogs/p/12195419.html