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

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

[Problem]

Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest substring is "b", with the length of 1.

 

[Analysis]

这题主要是对brute force matching进行优化。在对字符串进行扫描的过程中,使用一个变量start记录此次扫描的起点,使用一个Hash Table记录已出现的字符以及出现的位置。假如在扫描的过程中遇到了已出现的字符,那么判断这次扫描过的子串长度是不是最长,然后进行下一次扫描。关键在于下一次扫描的起点不是start+1而是重复字符上一次出现的位置+1,因为包含它的所有子串都不可能比上一次扫描过的子串长(在不包含重复字符的前提下)。

 

[Solution]

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

 

转载于:https://www.cnblogs.com/zhangqieyi/p/4850512.html

你可能感兴趣的文章
第三代搜索推出网民评价系统,seo末日还会远吗?
查看>>
希尔排序
查看>>
Silverlight 1.1架构图
查看>>
企业架构 - ADM方法概要介绍
查看>>
需求:如何做好深度访谈
查看>>
领域实体框架Rafy2 发布了
查看>>
CreateRemoteThread的调试问题
查看>>
求学之路
查看>>
Distributed Systems: What is atomic counting, with respect to cassandra?
查看>>
为什么我要写一些文字
查看>>
python_14(js)
查看>>
[Locked] Shortest Word Distance I & II & III
查看>>
微信小程序左滑删除功能
查看>>
Arraylist与linkedlist的区别
查看>>
运用BufferedWriter把数据写入文件
查看>>
spring MVC 如何获取session并实现传值到前台
查看>>
Mac键盘图标与对应快捷按键标志汇总
查看>>
android 通过post方式提交数据的最简便有效的方法
查看>>
关于swift中的常量和变量
查看>>
Elasticsearch
查看>>