博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode题解-3-Longest Substring Without Repeating Characters
阅读量:6718 次
发布时间:2019-06-25

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

hot3.png

解题思路

首先要读懂题目,它要求的是找到最长的子串,并且子串中没有出现重复的字符。

我的想法,是用一个map存储每个字符最后出现的位置,还要有个变量start,它用来记录上一次出现重复的位置,如果当前字符上一次出现的位置比start小,那么说明中间出现了重复,不能当成有效的子串。记得就是在扫描结束后,再判断一下最后一段子串。

给个图简单说明一下。 输入图片说明

参考源码

public class Solution {    public int lengthOfLongestSubstring(String s) {        if (s == null || s.isEmpty()) {            return 0;        }        int max = 0;        Map
lastPos = new HashMap
(); int start = 0; lastPos.put(s.charAt(0), start); for (int i = 1; i < s.length(); i++) { char c = s.charAt(i); if (lastPos.containsKey(c) && lastPos.get(c) >= start) { if (i - start > max) { max = i - start; } start = lastPos.get(c) + 1; } lastPos.put(c, i); } if (s.length() - start > max) { max = s.length() - start; } return max; }}

转载于:https://my.oschina.net/bonyfish/blog/841385

你可能感兴趣的文章
Akka笔记之消息传递
查看>>
《企业大数据系统构建实战:技术、架构、实施与应用》一1.3 本章小结
查看>>
为什么不能用memcached存储Session?
查看>>
《C++编程风格(修订版)》——2.2 明确定义的状态
查看>>
页面加载显示进度条
查看>>
Logstash 日志搜集处理框架 安装配置
查看>>
Manifest.xml 入门基础(一) 概述与&lt;manifest&gt;标签
查看>>
2016全球最强数据库大盘点
查看>>
可视化与领域驱动设计
查看>>
数据结构实践——字符串加密
查看>>
其他转移指令(0904)
查看>>
《卸甲笔记》-多表查询之一
查看>>
安装部署nvm、npm、nodejs之前先了解清楚三者之间关系
查看>>
linux 磁盘管理下(LVM逻辑卷创建和管理,磁盘配额设置方法以及小技巧)
查看>>
NFS Volume Provider(Part III) - 每天5分钟玩转 OpenStack(64)
查看>>
MySQL 安装详解
查看>>
使用Express + Socket.io + MongoDB实现简单的聊天室
查看>>
【cocos2d-x】横向滚屏射击游戏②----虚拟控制手柄
查看>>
Docker 之 容器网络管理
查看>>
基于时间点的恢复
查看>>