日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

子数组系列

發布時間:2025/5/22 编程问答 197 豆豆
生活随笔 收集整理的這篇文章主要介紹了 子数组系列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Longest Substring Without Repeating Characters (Medium)

問題描述

給出一個數組,求其連續不重復子數組最大長度,原代碼見 GitHub 17/05/25

Examples
Input
Given "abcabcbb",
Output
The answer is "abc", which the length is 3

算法思路

  • 若碰到重復字符,要求達到目標數組兩邊動態伸縮目的,需要設置兩個邊界變量

  • 奔跑者 在前面奔跑,每次都把當前字符存入 Set,若集合中已存在該字符,則停止奔跑

  • 行走者 在后面行走,每次都把當前字符移出 Set,若當前字符與 奔跑者 當前字符相同,則停止行走

通過以上算法,便可達到動態伸縮不重復子數組的目的,最大長度求解也變得相當簡單

AC 代碼

int lengthOfLongestSubstring(string s) {set<char> set;int max = 0;int walker = 0, runner = 0;while (runner < s.size()) {char rc = s.at(runner);if (set.find(rc) != set.end()) {char wc;/*when two chars at walker and runner are equalswalker stops*/while ((wc = s.at(walker++)) != rc) {set.erase(wc);}} else {set.insert(rc);}if (max < runner - walker + 1) {max = runner - walker + 1;}runner++;}return max; }

總結

以上是生活随笔為你收集整理的子数组系列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。