3 无重复字符的最长子串
解法1
时间复杂度:O(2n)
空间复杂度:官方题解中为
O
[
m
i
n
(
m
,
n
)
]
O[min(m, n)]
O[min(m,n)] Set的大小取决于字符串
n
n
n的大小以及字符集字母
m
m
m的大小。
我个人认为主要为
O
(
n
)
O(n)
O(n)
class Solution {
public int lengthOfLongestSubstring(String s) {
Set<Character> set = new HashSet<>();
int n = s.length();
int ans = 0, begin = 0, end = 0;
while (begin < n && end < n){
// have not same char
if(!set.contains(s.charAt(end))){
set.add(s.charAt(end++));
ans = Math.max(ans, end - begin);
// find same char
}else {
set.remove(s.charAt(begin++));
}
}
return ans;
}
}
解法2
时间复杂度:O(n)
空间复杂度:
class Solution {
public int lengthOfLongestSubstring(String s) {
}