iT邦幫忙

2025 iThome 鐵人賽

DAY 2
1

https://ithelp.ithome.com.tw/upload/images/20250916/20177944HeP2ocHG6W.jpg

https://ithelp.ithome.com.tw/upload/images/20250916/20177944zfrAIMns9R.jpg


class Solution{ // 438 O(N) O(1)
public:
    vector<int> findAnagrams(string s,string p){
        int n=s.size(),m=p.size(); if(m>n) return {};
        int cnt[26]={0},need=m; for(char c:p) ++cnt[c-'a'];//p需求;差幾成窗
        vector<int> ans;
        for(int r=0;r<n;++r){
            if(cnt[s[r]-'a']-->0) --need;//右進:舊值>0→補一
            if(r>=m && cnt[s[r-m]-'a']++>=0) ++need;//左出:舊值≥0→缺一
            if(!need) ans.push_back(r-m+1);
        }
        return ans;
    }
};

跟567實在太像必需比較下

438 起點 固定為|s1| 視窗長度達標且need==0 push_back(起點)多次
567 包含否 同為|p|


m 一律代表pattern的長度:拿來比對的短字串 p
n 則text長度:滑動視窗去找的位置 記做s


上一篇
開賽日碰巧是onboard day:)
下一篇
Sliding Window 7->8 &到部門囉:)
系列文
轉職仔之Data Science and ai master後的持續精進技術之路5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言