Leetcode 第三題 | Longest Substring Without ..| Javascript

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

題目

Given a string, find the length of the longest substring without repeating characters.

Examples:

Given “abcabcbb”, the answer is “abc”, which the length is 3.

Given “bbbbb”, the answer is “b”, with the length of 1.

Given “pwwkew”, the answer is “wke”, with the length of 3. Note that the answer must be a substring, “pwke” is a subsequence and not a substring.

思路

初始令i=1,ptr=0,開始遍歷i;
每遍歷一個i,檢查第i個之前的字串有沒有和s[i]相同的;
如果有 index就會小於i 那麼令 ptr = index 1;
即ptr是和s[i]相同的那個s[index]的下一個.
這時候s[ptr]和s[i]之間一個相同的字串也沒有,不然的話.
假設小於i的某個值和ptr代表的值重複,那麼那個時候ptr就是當前的ptr了
每做完這麼一步,更新max.
…不知大家有明白嗎..
不明白的話,理解一些indexOf和charAt函式的用法,實驗幾個例子,肯定就會了!

解法:

var lengthOfLongestSubstring  =  function(s)  {
if (s.length <= 1)
return s.length;
let max = 1;
let ptr = 0;
for (let i = 1; i < s.length; i  ) {
let index = s.indexOf(s.charAt(i), ptr);
if (index < i) {
ptr = index   1;
}
max = Math.max(max, i-ptr 1);
} 
return max;
};

相關文章

程式語言 最新文章