最长无重复子串问题 leetcode 3
一.代码及注释
class Solution {
public:
    int lengthOfLongestSubstring(string s) {
        int n = s.size(); //字符串的长度
        int ans = ;  //最长无重复子串的长度
        //建立map表 key为字符 val为该字符的下一个坐标位置
        //val取符号坐标+1用于更新start
        unordered_map<char,int> m;
        //定义start和end end即为当前字符,不断+1
        for(int start=,end=;end<n;end++){
            //当前字符为c
            char c = s[end];
            //如果map中有当前字符(即出现了重复的字符),则进入if语句
            if(m.find(c)!=m.end()){
                /*
                两种情况:
                1.如果start比m[c]小,如pwwkew,start为2,end为5两个w相等
                则start就更新为3,以end为结尾的最长无重复子串才能是5-3+1=3;
                2.如果start比m[c]大,如kwawk,如图所示,start为2,end为5,需要
                start保持不变
                */
                start = max(m[c],start);
            }
            //ans更新,end-start+1即以当前end为结尾的最长无重复串
            ans = max(ans,end-start+);
            //添加数据
            m.erase(c);
            m.insert(make_pair(c,end+));
        }
        return ans;
    }
};
二.图解

三.需要map的知识点(常用总结)
map的插入:常常需要和删除配合使用
map.erase(key);
map.insert(make_pair(key,val));
map的访问:直接通过访问下标
m[下标];
map的循环:
auto iter = m.begin();
while(iter!=m.end()){
cout<<iter.first()<<endl; //输出key
cout<<iter.second()<<endl;//输出val
}
map的查找:
m.find(key);返回的是迭代器,可用m.find(key)!=m.end()判断是否存在该key。
m.count(key);返回迭代器的数量,用于可重复的map。
最长无重复子串问题 leetcode 3的更多相关文章
- [LeetCode] Longest Substring Without Repeating Characters 最长无重复子串
		Given a string, find the length of the longest substring without repeating characters. For example, ... 
- LeetCode03 最长无重复子串
		题目 给定一个字符串,找出不含有重复字符的最长子串的长度. 解答 刚开始以为只是一遍遍历后来的字符和前面一样便开始算新子串,给的案例都过了,但是卡在了"dvdf" 后来经过重重试验 ... 
- [LeetCode] 3.Longest Substring Without Repeating Characters 最长无重复子串
		Given a string, find the length of the longest substring without repeating characters. Example 1: In ... 
- [LeetCode] Longest Substring Without Repeating Characters最长无重复子串
		Given a string, find the length of the longest substring without repeating characters. For example, ... 
- 【LeetCode】3.Longest Substring Without Repeating Characters 最长无重复子串
		题目: Given a string, find the length of the longest substring without repeating characters. Examples: ... 
- leetcode 3 Longest Substring Without Repeating Characters最长无重复子串
		Given a string, find the length of the longest substring without repeating characters. For example, ... 
- [LeetCode] Longest Substring Without Repeating Characters 最长无重复字符的子串
		Given a string, find the length of the longest substring without repeating characters. Example 1: In ... 
- [LeetCode] Longest Substring Without Repeating Characters 最长无重复字符的子串 C++实现java实现
		最长无重复字符的子串 Given a string, find the length of the longest substring without repeating characters. Ex ... 
- LeetCode.3-最长无重复字符子串(Longest Substring Without Repeating Characters)
		这是悦乐书的第341次更新,第365篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Medium级别的第2题Longest Substring Without Repeating Cha ... 
随机推荐
- UVALive - 4787 ICPC WF 2010 Tracking Bio-bots【dp】
			UVa 4787 WF题果然不一样,本来想暴力搜索,数据太大了,数组都开不了.看题解也不太懂,记录一下书上的题解,以后再看: 此题是给出N*M的格子,有些地方是墙,不可走.求所有不能只通过向上或者向右 ... 
- 日志 5.27 关于AssetBundle
			版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zxsean/article/details/27228783 大概日志就这么写的吧.没什么太专业的东 ... 
- mysql原来是按自然日统计。怎么可以用今天10点到次日10点这样统计???
			关于网友提出的" mysql原来是按自然日统计.怎么可以用今天10点到次日10点这样统计???"问题疑问,本网通过在网上对" mysql原来是按自然日统计.怎么可以用今天 ... 
- YUI css reset
			*{ margin:0; padding:0; } 以前写CSS都会在会在样式的开头部分添加上述的内容,今天才发现这种写法很不友好,会导致很多样式显示问题,所以并不适合所有的浏览器. 下面的是雅虎的c ... 
- How to use AutoMapper
			http://docs.automapper.org/en/stable/Getting-started.html IMappingExpression<TSource, TDestinatio ... 
- Serverless助力AI计算:阿里云ACK Serverless/ECI发布GPU容器实例
			ACK Serverless(Serverless Kubernetes)近期基于ECI(弹性容器实例)正式推出GPU容器实例支持,让用户以serverless的方式快速运行AI计算任务,极大降低AI ... 
- Uniapp使用iconfont
			看别人的项目有各种各样的图标既好看占用内存还小 后来才知道原来有icon图标这个东西,原谅我真的一直处于混沌的状态. 刚好最近项目使用了uniapp框架,引入iconfont的方式和之前有些不太一样 ... 
- hdu 1789 Doing Homework again (Greedy)
			Problem - 1789 继续贪心.经典贪心算法,如果数据比较大就要用线段树来维护了. 思路很简单,只要按照代价由大到小排序,然后靠后插入即可.RE了一次,是没想到deadline可以很大.如果d ... 
- PHP内置服务器
			PHP在安装的时候会内置了服务器的功能,我们在使用的过程中如果只是调试,可以选择启动PHP内置的服务器,下面是windows下PHP内置服务器的启动步骤: 1.将php的D:\phpStudy\php ... 
- ip地址库 与浏览器的关系
			https://zhidao.baidu.com/question/325152705.html 只要手机连接数据上网就会产生ip,只要进入了淘宝,就能查出用户访问记录的. 手机是运营商动态分配的.它 ... 
