難度:中等。
不能暴力搜尋,用到了動態規劃的思想。
使用乙個陣列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.給定字串,找到最長無重複字...