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.pswp.cn/news/273070.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273070.shtml
英文地址,請注明出處:http://en.pswp.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或者不提供輸入&#…