LeetCode 3題:無重復字符的最長子串(原創)

【題目描述】

給定一個字符串 s ,請你找出其中不含有重復字符的 最長子串的長度。??

示例 1:

輸入: s = "abcabcbb"
輸出: 3?
解釋: 因為無重復字符的最長子串是 "abc",所以其長度為 3。
示例 2:

輸入: s = "bbbbb"
輸出: 1
解釋: 因為無重復字符的最長子串是 "b",所以其長度為 1。
示例 3:

輸入: s = "pwwkew"
輸出: 3
解釋: 因為無重復字符的最長子串是 "wke",所以其長度為 3。
? ? ?請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。

提示:

0 <= s.length <= 5 * 104
s 由英文字母、數字、符號和空格組成

【解題代碼】

package string;public class LengthOfLongestSubstring {public static void main(String[] args) {String s = "abcabcbb";int result = new LengthOfLongestSubstring().lengthOfLongestSubstring(s);System.out.println(result);}public  int lengthOfLongestSubstring(String s) {int i = 0;int max = 0;StringBuilder sb = new StringBuilder(s);String subString = "";while (i < sb.length()){char ch = sb.charAt(i);int inx = subString.indexOf(ch);if (inx != -1) {if (max < subString.length()) max = subString.length();subString = subString.substring(inx + 1);}subString += ch;i++;}if (max < subString.length()) max = subString.length();return max;}
}

【解題思路】

? ? ? ? 根據題目描述和對示例進行分析,感覺這一題可以通過“滑動窗口”的算法進行處理,即定義兩個索引值i1,i2,i1,i2從0開始,i2向后滑動,判斷當前子字符串是否有重復字符,如果沒有不斷更新最大長度值,如果有的話,將i1設置為與最后一個字符重復的字符下一個索引值。按照這個思路,完成代碼編寫,并提交LeetCode成功

【解題步驟】

  1. 定義變量
    int i = 0;
    int max = 0;
    StringBuilder sb = new StringBuilder(s);
    String subString = "";
  2. 從0開始,向后滑動獲取當前字符,一直到字符串結尾為止
    while (i < sb.length()){char ch = sb.charAt(i);
  3. 判斷當前字符如果在子字符串中,那么當前計算當前子字符串長度,并更新長度最大值比較,然后重新調整下一個子字符串的開始索引
    int inx = subString.indexOf(ch);
    if (inx != -1) {if (max < subString.length()) max = subString.length();subString = subString.substring(inx + 1);
    }
  4. 當前子字符串加上當前字符,并將自增滑動索引值
    subString += ch;
    i++;
  5. 循環結束后,將當前子字符串和最大值進行比較更新,并返回最大值
    if (max < subString.length()) max = subString.length();
    return max;

【思考總結】

  1. 這道題的關鍵是“滑動窗口”的算法實現思路,不斷向后滑動尋找合理的無重復字符子串,并刷新長度最大值;
  2. 程序員對于字符串的操作,一定能非常精熟;
  3. LeetCode解題之前,一定不要看題解,看了就“破功”了!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13306.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13306.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13306.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Dalsa windows10下安裝流程及部分問題分析

文章目錄 安裝及依賴庫說明切換驅動模式流程問題&#xff1a;通過Dalsa SDK開發后找不到相機&#xff1f;問題&#xff1a;找不到采集卡&#xff1f; 安裝及依賴庫說明 官網(https://www.teledynedalsa.com/en/support/downloads-center/)下載的最新文件&#xff08;20240515&…

Leetcode 404:左葉子之和

給定二叉樹的根節點 root &#xff0c;返回所有左葉子之和。 思路&#xff1a;遍歷樹&#xff0c;尋找左葉子節點&#xff1b; 如果判斷是左葉子節點&#xff0c;就更新sum。 public static int sumOfLeftLeaves(TreeNode root){int sum0;sumcompute(root,sum);return sum;}/…

Elasticsearch 8.1官網文檔梳理 - 十四、Query DSL(ES 查詢語法)

Query DSL Elasticsearch 提供了一種基于JSON 的查詢 DSL (Domain Specific Language) 來定義查詢。可以把查詢 DSL 看作是查詢的 AST&#xff08;Abstract Syntax Tree)&#xff0c;由兩種類型的子句組成: 葉子節點查詢&#xff1a; 葉子查詢子句在特定字段中查找特定值&…

Flutter 中的 DrawerHeader 小部件:全面指南

Flutter 中的 DrawerHeader 小部件&#xff1a;全面指南 在 Flutter 的 Drawer 組件中&#xff0c;DrawerHeader 是一個特殊的部件&#xff0c;用于在抽屜的頂部顯示&#xff0c;通常包含應用的標志、用戶信息、標題或其他重要的視覺元素。DrawerHeader 可以作為一個視覺分隔符…

Vue3 報v-bind is missing expression.vue(34)錯誤的解決方案

一、項目環境 node.js 版本&#xff1a;node-v20.11.1-x64 vscode版本&#xff1a;version 1.89 錯誤截圖 二、可能原因解決方案 2.1 v-bind 與 :src之間存在空格 錯誤示例&#xff1a; <img v-bind :src"imgurl" /> 如果有在 :src 前面寫了 v-bind&…

使用Pixi.js 圖片切換特效(圖片分段下滑以及復原)

1.效果: 2.實現原理: 將圖片按寬高切分為x*y(具體可以自己調整)個矩形區域&#xff0c;對每個頂點分配一個隨機值noiseValue(-1到1之間),在頂點著色器中根據這個隨機值而做出不同的y軸位移效果從而實現出分段的下滑或者復原的效果。 3.代碼實現: 首先是頂點著色器的代碼,其中…

C++ lambda表達式詳解

C lambda表達式詳解 C11 lambda表達式精講 [ capture ] ( params ) opt -> ret { body; };capture 是捕獲列表&#xff0c;params 是參數表&#xff0c;opt 是函數選項&#xff0c;ret 是返回值類型&#xff0c;body是函數體 一個完整的 lambda 表達式看起來像這樣&#xf…

醫院污水一體化處理設備有哪些

醫院污水一體化處理設備通常包括以下幾個主要組件&#xff1a; 預處理單元&#xff1a;用于去除污水中的固體懸浮物、顆粒物、油脂等&#xff0c;常見的預處理單元包括格柵、沉砂池、油水分離器等。生物處理單元&#xff1a;用于降解有機物質和去除氮、磷等營養物質。常見的生物…

7D-RESAR性能工程:術語表

文章目錄 1. 前言1.1. 編寫目的1.2. 適應范圍與對象 2. 術語表2.1. RESAR性能工程2.2. 性能測試2.3. 性能項目2.4. 性能項目方案2.5. 性能項目計劃2.6. 性能需求類術語2.6.1. 性能需求/指標2.6.2. 并發用戶2.6.3. 在線用戶2.6.4. 并發度&#xff08;并發率&#xff09;2.6.5. 事…

Kubernetes進階對象Deployment、DaemonSet、Service

Deployment Pod 在 YAML 里使用“containers”就可以任意編排容器&#xff0c;而且還有一個“restartPolicy”字段&#xff0c;默認值就是 Always&#xff0c;可以監控 Pod 里容器的狀態&#xff0c;一旦發生異常&#xff0c;就會自動重啟容器。 不過&#xff0c;“restartPo…

Java小游戲之湯姆貓

背景&#xff1a; 博主寫過羊了個羊小游戲&#xff0c;客戶覺得羊了個羊同學寫過了&#xff0c;想換一個&#xff0c;于是筆者想到了湯姆貓。就是那個以前在蘋果手機上的貓。 過程&#xff1a; 初始會有一個貓的圖片展示&#xff0c;然后你點擊按鈕&#xff0c;貓會有不同動作…

C++進階之路:何為默認構造函數與析構函數(類與對象_中篇)

?? 歡迎大家來訪Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭?&#xff5e;?? &#x1f31f;&#x1f31f; 歡迎各位親愛的讀者&#xff0c;感謝你們抽出寶貴的時間來閱讀我的文章。 我是Srlua小謝&#xff0c;在這里我會分享我的知識和經驗。&am…

Web3與物聯網:構建智能連接的數字世界

引言 隨著互聯網的不斷發展&#xff0c;物聯網&#xff08;Internet of Things, IoT&#xff09;作為一種新興的信息技術&#xff0c;正在逐漸滲透到我們的生活和工作中。而隨著Web3的興起&#xff0c;物聯網將迎來新的發展機遇。本文將探討Web3與物聯網的結合&#xff0c;如何…

如何在職場中構建穩固地位:持續學習、拓展人脈與職業規劃

在日益激烈的職場競爭中&#xff0c;保持一種穩健且前瞻性的狀態是至關重要的&#xff0c;它可以幫助我們在各種“裁員潮”中保持相對安全的位置。以下是一些建議&#xff0c;幫助我們判斷和維持在職場中的安全位置&#xff1a; 首先&#xff0c;持續學習和提升技能是關鍵。職場…

2024年NOC大賽創客智慧(西瓜創客)圖形化復賽編程真題模擬試卷包含答案

NOC 復賽圖形化模擬題 【題目要求】 1、添加角色小貓和“Balloon1”角色氣球(大小 70) 2、添加背景“Boardwalk” 3、點擊綠旗,角色初始位置如圖,小貓從舞臺左側出發,向舞臺右 側移動,移動過程中不斷切換造型 4、當小貓碰到氣球角色,小貓停止移動,氣球逐漸向舞臺上方…

FFmpeg開發筆記(二十七)解決APP無法訪問ZLMediaKit的直播鏈接問題

上一篇文章介紹了如何通過ZLMediaKit實現視頻推拉流&#xff0c;并使用VLC播放器驗證視頻直播地址。即使不用VLC播放器&#xff0c;直接在Qt工程的C代碼中調用FFmpeg的API&#xff0c;也能訪問ZLMediaKit的直播地址&#xff0c;并正常渲染視頻畫面。關于如何在Qt工程中引入FFmp…

Oracle中全量CHECKPOINT和增量CHECKPOINT的區別與作用

全量CHECKPOINT和增量CHECKPOINT對用戶都是透明的&#xff0c;而增量CHECKPOINT只不過是將全量CHECKPOINT要寫的臟塊分時間分批次寫到數據文件中而已&#xff0c;此操作可以極大地減少對數據庫性能的影響。 全量CHECKPOINT 全量CHECKPOINT是指DBWR進程將臟緩沖區列表中的臟塊一…

Spring Boot集成Security快速入門Demo

1.什么是Security&#xff1f; Spring Security是一個Java框架&#xff0c;用于保護應用程序的安全性。它提供了一套全面的安全解決方案&#xff0c;包括身份驗證、授權、防止攻擊等功能。Spring Security基于過濾器鏈的概念&#xff0c;可以輕松地集成到任何基于Spring的應用…

ifconfig 無輸出

https://www.cnblogs.com/YYFaGe/p/14482813.html YYFaGe 博客園首頁聯系管理隨筆 - 56 文章 - 0 評論 - 2 閱讀 - 94650 ifconfig 無輸出 在終端執行ifconfig發現無任何輸出&#xff0c;也無報錯&#xff08;基于hi3559av100開發板&#xff09;。 1、參考這個連接解決&…

月薪3萬,沉迷“薅羊毛”

在網購江湖中&#xff0c;蟹老板是一位擁有十年經驗的資深“羊毛黨”。 他不僅是位精明的數學家&#xff0c;更是一位高效的“生產線”工人&#xff0c;專注于各大網購平臺的優惠機制。每逢618大促&#xff0c;他總能憑借超凡的洞察力和手速&#xff0c;輕松斬獲豐厚的“羊毛”…