LeetCode 3 無重複字元的最長子串

2021-10-13 22:40:57 字數 1349 閱讀 1805

難度:中等。

不能暴力搜尋,用到了動態規劃的思想。

使用乙個陣列a儲存從每個索引開始的最長子串,則

l[i + 1] >= l[i] - 1
計算l[i+1]比l[i]多的數量,從索引為i + l[i]的字元開始判斷,判斷其與[i, i + l[i] - 1]範圍內的字元是否重複,不重複則l[i+1]++,重複則停止。

正確解法:

bool

is_repetition

(char

*s,int begin_index,

int cur_index)

return

false;}

intlengthoflongestsubstring

(char

* s)

int begin = i +1;

if(i ==0)

else

for(

int j = begin; j < len; j++

) a[i]

= j - i +1;

}if(a[i]

> max_l)

}return max_l;

}

也可以用乙個陣列來記錄每個字元出現的次數,acsii碼作為索引,這樣時間複雜度更低為o(n)。

將上述**轉換成c++

正確解法:

class

solution

return

false;}

public

:int

lengthoflongestsubstring

(string s)

int begin = i +1;

if(i ==0)

else

for(

int j = begin; j < len; j++

) a[i]

= j - i +1;

}if(a[i]

> max_l)

}return max_l;}}

;

2021.04.09 劍指 offer 48. 最長不含重複字元的子字串

正確解法:

class

solution

else

mymap[s[right]

]= right;

} right++;}

ans =

max(ans, right - left)

;return ans;}}

;

leetcode 3 無重複的字串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

leetcode 3 無重複字元的最長字元子串

堅持打卡!題目 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwk...

leetcode 3 最長無重複字串

3.longest substring without repeating characters 題面 given a string,find the length of the longest substring without repeating characters.給定字串,找到最長無重複字...