博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode 3
阅读量:6442 次
发布时间:2019-06-23

本文共 1444 字,大约阅读时间需要 4 分钟。

Given a string, find the length of the longest substring without repeating characters.

Example 1:

Input: "abcabcbb"Output: 3 Explanation: The answer is "abc", which the length is 3.

Solution:

int lengthOfLongestSubstring(string s) {    int max = 0, temp = 0, now = 0;    unordered_map
c2i; for (int i = 0; i < s.length(); i++){ if(c2i.count(s[i]) == 0){ temp++; c2i[s[i]] = i; }else{ int t = c2i[s[i]]; c2i[s[i]] = i; for(int j = t-1; j >= now; j--){ c2i.erase(s[j]); } if(temp > max){ max = temp; } temp -= (t - now); now = t + 1; } } max = max > temp ? max : temp; return max;}

PS.

今天的问题只要在于对于map的操作不熟悉,应用的几个操作分别是:

count(KEY):统计某个值出现的次数(0或1因为map不允许出现重复元素);

erase(KEY):抹除某个值的元素。

除此之外查看C++文档:

http://www.cplusplus.com/reference/unordered_map/unordered_map/

PPS.

看到一种更好的写法(JAVA)

public int lengthOfLongestSubstring(String s) {    int n = s.length();    Set
set = new HashSet<>(); int ans = 0, i = 0, j = 0; while (i < n && j < n) { // try to extend the range [i, j] if (!set.contains(s.charAt(j))){ set.add(s.charAt(j++)); ans = Math.max(ans, j - i); } else { set.remove(s.charAt(i++)); } } return ans;}

 

转载于:https://www.cnblogs.com/QinHaotong/p/9581052.html

你可能感兴趣的文章
BFS 2015百度之星初赛2 HDOJ 5254 棋盘占领
查看>>
LeetCode 3
查看>>
活灵活现用 Git --基础篇
查看>>
c++ 函数声明
查看>>
linux下,免密码登录
查看>>
街道管理
查看>>
hdu 3501 Calculation 2 (欧拉函数)
查看>>
csv2mysql
查看>>
可以免费下载视频素材和模板网站汇总
查看>>
生成包含数字和大小写字母的随机码
查看>>
前辈回顾15年程序员生涯,总结的7点经验
查看>>
WebView与 JS 交互方式
查看>>
Java提高篇——静态代码块、构造代码块、构造函数以及Java类初始化顺序
查看>>
【CT】四、Turing Machines(2)
查看>>
【matlab】plot
查看>>
Kafka生产者APi
查看>>
有关计算机组成的分享~
查看>>
梳理回顾
查看>>
基于开源Dubbo分布式RPC服务框架的部署整合
查看>>
用C#实现智能设备上的NotifyIcon类
查看>>