LeetCode程序員面試題之無重復字符的最長子串
1.簡述:
給定一個字符串 s ,請你找出其中不含有重復字符的 最長子串 的長度。
示例 1:
輸入: s = "abcabcbb"
輸出: 3
解釋: 因為無重復字符的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: s = "bbbbb"
輸出: 1
解釋: 因為無重復字符的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: s = "pwwkew"
輸出: 3
解釋: 因為無重復字符的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是一個子序列,不是子串。
2.代碼實現(xiàn):
class Solution { public int lengthOfLongestSubstring(String s) { // 哈希集合,記錄每個字符是否出現(xiàn)過 Set<Character> occ = new HashSet<Character>(); int n = s.length(); // 右指針,初始值為 -1,相當于我們在字符串的左邊界的左側(cè),還沒有開始移動 int rk = -1, ans = 0; for (int i = 0; i < n; ++i) { if (i != 0) { // 左指針向右移動一格,移除一個字符 occ.remove(s.charAt(i - 1)); } while (rk + 1 < n && !occ.contains(s.charAt(rk + 1))) { // 不斷地移動右指針 occ.add(s.charAt(rk + 1)); ++rk; } // 第 i 到 rk 個字符是一個極長的無重復字符子串 ans = Math.max(ans, rk - i + 1); } return ans; } }
到此這篇關(guān)于LeetCode程序員面試題之無重復字符的最長子串的文章就介紹到這了,更多相關(guān)Java計算無重復字符的最長子串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaWeb核心技術(shù)中Session與Cookie淺析
session的工作原理和cookie非常類似,在cookie中存放一個sessionID,真實的數(shù)據(jù)存放在服務器端,客戶端每次發(fā)送請求的時候帶上sessionID,服務端根據(jù)sessionID進行數(shù)據(jù)的響應2023-02-02java+selenium實現(xiàn)自動化打開頁面的方法
今天小編就為大家分享一篇java+selenium實現(xiàn)自動化打開頁面的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05JDK9的新特性之String壓縮和字符編碼的實現(xiàn)方法
這篇文章主要介紹了JDK9的新特性之String壓縮和字符編碼的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05Java自帶定時任務ScheduledThreadPoolExecutor實現(xiàn)定時器和延時加載功能
今天小編就為大家分享一篇關(guān)于Java自帶定時任務ScheduledThreadPoolExecutor實現(xiàn)定時器和延時加載功能,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12