LeetCode 3. Longest Substring Without Repeating Characters

原题链接在这里:https://leetcode.com/problems/longest-substring-without-repeating-characters/

题目:

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.

题解:

快慢指针维护substring的方法在Minimum Window Substring里有总结.

窗口[walker,runner]. walker, runner都是向右移,维护map, 用来存储扫过char的frequency. 首先右侧窗口runner在前跑,扫过char的frequency 加一. 直到遇到frequency已经大于零, 说明前面有相同元素, runner停下移动walker. walker 扫过char的frequency减一, 直到把frequency大于1的那个char扫过.

Time Complexity: O(n). n = s.length().

Space: O(1). 256 map size.

AC Java:

 1 public class Solution {
 2     public int lengthOfLongestSubstring(String s) {
 3         int res = 0;
 4         int [] map = new int[256];
 5         int count = 0;
 6         int walker = 0;
 7         int runner = 0;
 8         
 9         while(runner < s.length()){
10             if(map[s.charAt(runner++)]++ > 0){
11                 count++;
12             }
13             while(count > 0){
14                 if(map[s.charAt(walker++)]-- > 1){
15                     count--;
16                 }
17             }
18             res = Math.max(res, runner-walker);
19         }
20         return res;
21     }
22 }

上面的方法会跑2*n, 可以只跑n. 需用HashMap来记录每个char和对应index的关系.

遇到repeating char时walker直接走到之前出现这个char的后一位即可.

Time Complexity: O(n). Space: O(n).

AC Java:

 1 public class Solution {
 2     public int lengthOfLongestSubstring(String s) {
 3         int res = 0;
 4         HashMap<Character, Integer> hm = new HashMap<Character, Integer>();
 5         for(int walker = 0, runner = 0; runner<s.length(); runner++){
 6             char c = s.charAt(runner);
 7             if(hm.containsKey(c)){
 8                 walker = Math.max(walker, hm.get(c));
 9             }
10             res = Math.max(res, runner-walker+1);
11             hm.put(c, runner+1);
12         }
13         return res;
14     }
15 }

 跟上Longest Substring with At Most Two Distinct Characters

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/4825047.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

The mook jong 计数DP

The mook jong ZJiaQ为了强身健体&#xff0c;决定通过木人桩练习武术。ZJiaQ希望把木人桩摆在自家的那个由1*1的地砖铺成的1*n的院子里。由于ZJiaQ是个强迫症&#xff0c;所以他要把一个木人桩正好摆在一个地砖上&#xff0c;由于木人桩手比较长&#xff0c;所以两个木人桩之间…

java executequery,JDBC中的execute(),executeQuery()和executeUpdate()方法有什么区别?

一旦你创建了Statement对象可以使用的即声明接口的执行方法之一执行它&#xff0c;execute()&#xff0c;executeUpdate()和executeQuery()。的execute()方法&#xff1a;该方法是用于执行SQL DDL语句&#xff0c;它返回一个布尔值&#xff0c;指定的天气ResultSet对象可以被检…

ThinkPHP- 3.1

基础&#xff1a; 1. 基础概念 LAMP LAMP是基于Linux&#xff0c;Apache&#xff0c;MySQL和PHP的开放资源网络开发平台。这个术语来自欧洲&#xff0c;在那里这些程序常用来作为一种标准开发环境。名字来源于每个程序的第一个字母。每个程序在所有权里都符合开放源代码标准&am…

java 判断域密码到期提醒,Exchange Server 2010下,检测用户密码到期通知提醒脚本...

#############################################Author:wangtingdong#For:检测AD密码过期时间并邮件通知#Version:1.0##############################################Import-Module Activedirectory#1和2选择一个执行#1检索出指定OU里不包含设置了永不过期及禁用的账户#$allad…

php中定义css样式的好处,CSS的优点和缺点分别是什么

CSS的优点有&#xff1a;丰富的样式定义、易于修改、结构清晰、多页面使用等&#xff1b;CSS的缺点&#xff1a;浏览器支持不一样具有兼容性、不能明确指定继承性CSS的主要哦作用是为HTML页面添加样式&#xff0c;使得页面更加美观。接下来在文章中将为大家详细介绍CSS的优点与…

前端工具整理

代码的规范】 http://www.css88.com/doc/codeguide/ 【Viewport Sizes尺寸查询】 http://viewportsizes.com/?filter 【在线小工具】 http://www.xueui.cn/design/online-tools 【px,em,rem单位转换工具】 http://pxtoem.com/ 【json格式化】 http://jsonlint.com/ 【在线…

mysql无法本地连接,本地连接腾讯云Mysql失败问题

腾讯云主机中MySQL无法远程连接的解决办法在远程主机上&#xff0c;我开启了 mysql服务&#xff0c;用 phpmyadmin 可以打开&#xff0c;比如说用户名为 root&#xff0c;密码为 123456。不过用 Mysql 客户端远程连接时却报了错误&#xff0c;比如 Mysql-Front 报了如下Access …

python getcwd 转义,Python os.getcwd() 方法

Python os.getcwd() 方法概述os.getcwd() 方法用于返回当前工作目录。语法getcwd()方法语法格式如下&#xff1a;os.getcwd()参数无返回值返回当前进程的工作目录。实例以下实例演示了 getcwd() 方法的使用&#xff1a;#!/usr/bin/python# -*- coding: UTF-8 -*-import os, sys…

函数_方法_的四种调用方式

class Program{/// <summary>/// 无参数&#xff0c;无返回值/// </summary>/// <param name"args"></param>static void n1(){Console.WriteLine("这是第一种方法");}/// <summary>/// 有参数&#xff0c;无返回值/// <…

php_cawler_html嵌套标签清洗

主要处理 嵌套 div&#xff0c;正则无法很好的处理清洗 比如文本&#xff1a; 想要移除 class quizPutTag 的div &#xff0c;内部可能嵌套的还有未知层级的div【前提是html文本段是闭合标签的】 这是<div>test<div class"quizPutTag">test</div>…

php添加项目,thinkphp添加一个项目

假如我们想新建一个app项目&#xff0c;创建一个app文件夹&#xff0c;在app目录下 新建一个index.php文件加上入口文件引用define(APP_DEBUG,TRUE);require_once(../ThinkPHP.php);访问你刚建立的文件&#xff0c;这时候app目录里面自动新建了所需的文件app/conf/config.php这…

PHP中的mb_convert_encoding与iconv函数介绍

iconv函数库能够完成各种字符集间的转换&#xff0c;是php编程中不可缺少的基础函数库。 1、下载libiconv函数库http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz&#xff1b; 2、解压缩tar -zxvf libiconv-1.9.2.tar.gz; 3、安装libiconv &#xff03;confi…

php遍历视频文件,php使用glob函数遍历文件和目录详解

php glob()函数返回匹配指定模式的文件名或目录。因此我们可以使用glob函数来查找文件&#xff0c;也可以实现目录的遍历。函数说明&#xff1a;array glob ( string $pattern [, int $flags ] )功能&#xff1a;寻找与模式匹配的文件路径,返回包含匹配文件(目录)的数组(注&…

GitHub 建立远程仓库

终端所有信息: Last login: Fri Aug 14 08:58:01 on console wuxiaoyuan:~ lan$ ls -al ~/.ssh ls: /Users/lan/.ssh: No such file or directory wuxiaoyuan:~ lan$ mkdir .ssh wuxiaoyuan:~ lan$ cd /Users/lan/.ssh wuxiaoyuan:.ssh lan$ ssh-keygen -t rsa -b 4096 -C &qu…

朱建辉php,朱建辉/laravel-bjyblog

链接简介这个项目是把 thinkphp-bjyblog 用 laravel 框架重构后的产物&#xff1b;下图中的白俊遥博客即是使用 laravel-bjyblog 开发的个人博客安装使用可以通过以下两种命令安装&#xff1b;composer create-project baijunyao/laravel-bjyblog blog && cdblog &…

matlab 棍,双足机器人行走棍图怎么用MATLAB画出来

匿名用户1级2016-05-25 回答The following is a function I wrote to generate a stick diagram of robot motion. Hope it is helpful to you all.function stick(filename,user_frame_per_second,max_step)global robotfoot2;mov_traj load(filename);dt mov_traj(2,1) - …

设计模式学习笔记-观察者模式

1. 概述 有时被称作发布/订阅模式&#xff0c;观察者模式定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时&#xff0c;会通知所有观察者对象&#xff0c;使它们能够自动更新自己。 2. 解决的问题 将一个系统分割…

Handler与多线程

1、Handler介绍 在Android开发中&#xff0c;我们常会使用单独的线程来完成某些操作&#xff0c;比如用一个线程来完成从网络上下的图片&#xff0c;然后显示在一个ImageView上&#xff0c;在多线程操作时&#xff0c;Android中必须保证以下两点&#xff1a; &#xff08;1&…

oracle read only 事务,oracle set transaction read only与dbms_transaction实现事务transaction控制...

SQL> show userUser is "SYS"SQL> set transaction read only;Transaction setSQL> insert into t_table values(3);1 row insertedSQL> commit;Commit complete---sys用户 set transaction read only不生效SQL> select * from t_table;A------------…

oracle report builder 6i下载,oracle report builder 6i - 数据模型中的SQL查询代码

我是Vijetha&#xff0c;我正在研究报告6i&#xff0c;我很陌生 . 我有以下查询 .在front_end中&#xff0c;在Reports Parameter中&#xff0c;当用户单击“运行”按钮时&#xff0c;它将询问START_DATE和END_DATE输入 .如果用户提供START_DATE和END_DATE或者不提供输入&#…