先填坑
滑動窗口
3. 無重復字符的最長子串
給定一個字符串 s ,請你找出其中不含有重復字符的最長子串的長度。
思路:用一個uset容器存放當前滑動窗口中的元素
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:int lengthOfLongestSubstring(string s) {unordered_set<char> str;int left = 0,right = 0;int maxLen = 0;for(;right < s.size(); right++) {while(left < right && str.count(s[right])) {str.erase(s[left++]);}maxLen = max(right - left + 1, maxLen);str.insert(s[right]);}return maxLen;}
};
438. 找到字符串中所有字母異位詞是
給定兩個字符串 s 和 p,找到 s 中所有 p 的 異位詞 的子串,返回這些子串的起始索引。不考慮答案輸出的順序。
思路:先用vector數組把p存起來,然后遍歷s,記滑動窗口右邊界為r,則cnt[s[r] - a] < 0,滑動窗口左邊界l右移cnt[s[l] - a] ++;
class Solution {
public:vector<int> findAnagrams(string s, string p) {vector<int> cnt(26, 0);vector<int> res;for(char c : p) {cnt[c - 'a']++;}int l = 0, r = 0