自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一篇聊聊最長(zhǎng)未重復(fù)子字符串

開(kāi)發(fā) 前端
使用字典存儲(chǔ)非重復(fù)子字符串的下一個(gè)可能有效字符的位置,然后迭代字符串更新 maxLen、dictionary 和遇到重復(fù)時(shí)的 startIdx。

[[434992]]

前言

我們社區(qū)從本期開(kāi)始會(huì)將顧毅(Netflix 增長(zhǎng)黑客,《iOS 面試之道》作者,ACE 職業(yè)健身教練。微博:@故胤道長(zhǎng)[1])的 Swift 算法題題解整理為文字版以方便大家學(xué)習(xí)與閱讀。

該算法題解的 github 倉(cāng)庫(kù)地址是:https://github.com/soapyigu/LeetCode-Swift[2]

不積跬步,無(wú)以至千里;不積小流,無(wú)以成江海,Swift社區(qū) 伴你前行。

1. 描述

給定一個(gè)字符串 s , 找出最長(zhǎng)未重復(fù)的子字符串的長(zhǎng)度。

2. 示例

示例 1

  1. 輸入:s = "abcabcbb" 
  2. 輸出:3 
  3. 解釋?zhuān)鹤铋L(zhǎng)未重復(fù)子字符串答案是"abc",長(zhǎng)度為 3。 

示例 2

  1. 輸入:s = "bbbbb" 
  2. 輸出:1 
  3. 解釋?zhuān)鹤铋L(zhǎng)未重復(fù)子字符串答案是"b",長(zhǎng)度為 1。 

示例 3

  1. 輸入:s = "pwwkew" 
  2. 輸出:1 
  3. 解釋?zhuān)鹤铋L(zhǎng)未重復(fù)子字符串答案是"wke",長(zhǎng)度為 3。注意答案必須是子字符串,“pwke” 是一個(gè)子列,而不是一個(gè)子字符串。 

示例 4

  1. 輸入:s = "" 
  2. 輸出:0 

3. 答案

  1. class LongestSubstringWithoutRepeatingCharacters { 
  2.     func lengthOfLongestSubstring(_ s: String) -> Int { 
  3.         var maxLen = 0, startIdx = 0, charToPos = [CharacterInt]() 
  4.         let sChars = Array(s) 
  5.          
  6.         for (i, charin sChars.enumerated() { 
  7.             if let pos = charToPos[char] { 
  8.                 startIdx = max(startIdx, pos) 
  9.             } 
  10.              
  11.             // update to next valid position 
  12.             charToPos[char] = i + 1 
  13.             maxLen = max(maxLen, i - startIdx + 1) 
  14.         } 
  15.          
  16.         return maxLen 
  17.     } 

主要思想:使用字典存儲(chǔ)非重復(fù)子字符串的下一個(gè)可能有效字符的位置,然后迭代字符串更新 maxLen、dictionary 和遇到重復(fù)時(shí)的 startIdx。

 

  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(n)

 

責(zé)任編輯:武曉燕 來(lái)源: Swift社區(qū)
相關(guān)推薦

2021-12-08 14:02:20

符串排列搜索

2021-11-29 08:49:37

字符串轉(zhuǎn)換整數(shù)

2023-03-07 10:07:04

JavaScript字符串反斜杠

2021-05-28 10:02:05

Swift5 字符串String

2021-09-02 09:22:13

算法無(wú)重復(fù)字符

2023-07-31 07:48:43

Java內(nèi)存虛擬機(jī)

2023-09-21 08:05:49

Mybatis插件開(kāi)發(fā)

2021-03-11 10:00:32

Java字符串開(kāi)發(fā)

2021-03-04 08:34:54

Java交換變量字符串基礎(chǔ)

2021-07-03 10:02:30

Python字符串瀏覽器

2022-05-26 09:31:20

Java字符串

2022-09-26 00:00:02

字符串數(shù)據(jù)結(jié)構(gòu)

2021-11-19 09:00:24

LeetCode字符串算法

2022-06-30 22:53:18

數(shù)據(jù)結(jié)構(gòu)算法

2023-08-03 07:34:34

格式化字符串參數(shù)

2016-12-29 15:58:00

字符串子串算法

2022-06-02 07:11:13

JVMJava

2017-12-11 13:50:17

LinuxBash子字符串

2023-12-08 08:26:05

數(shù)據(jù)存儲(chǔ)持久性

2024-01-03 08:20:05

Java字符串性能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)