非重複字串長度

2021-10-08 19:26:58 字數 600 閱讀 8115

問題:

給定乙個字串,找出最長的不具有重複字元的子串的長度。例如,「abcabcbb」不具有重複字元的最長子串是「abc」,長度為3。對於「bbbbb」,最長的不具有重複字元的子串是「b」,長度為1。

解:

function

lengthoflongestsubstring

(s)let max =

0let num =

0for

(let i =

0; i < s.length; i++

)else

num =0}

} max = max > num ? max : num

return max

}

思路:

遍歷字串並記錄下每乙個字元及其下標,利用num記錄下已經遍歷的長度。如果在遍歷過程中,出現了重複的字元,就用max記錄下最大長度。最後,將指標i返回到重複字元第一次出現的位置的下一位,重新開始新一輪的記錄(重點)

注意:如果不將指標i回滾的話,可能會出現漏記的情況。

字串長度

當字元全是英文本元的時候,兩者是一樣。這裡主要比較一下,中英文混排的時候,兩個計算結果。測試時編碼方式是utf8 複製 如下 str 中文a字1符 echo strlen str echo echo mb strlen str,utf8 輸出結果 14 6 結果分析 在strlen計算時,對待乙個u...

字串長度

在c c 中,字串是以零 0 結尾的。比如,對於下面的字串 hello word 在最後乙個字元 d 後面,還有乙個我們肉眼看不見的 0 字元,作為該字串的結束符。所以,hello word 其在記憶體中的儲存形式為 最後有乙個我們看不見的 0 明白了字串的結尾方式,那麼如何計算字串的長度呢?比如 ...

字串長度

碰到第乙個字串結束符 0 時返回計數器值,即 是指實際字串或字元陣列的實際長度 不是所佔空間的位元組數 includeusing namespace std int main char a 32 cin a cin會在寫入結束後加入乙個 0字元 如果輸入了32個字元則會越界 cout strlen ...