先填坑
滑动窗口
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