class Solution {public: vector<int> findAnagrams(string s, string p) { int scnt[26] = {0}; int pcnt[26] = {0}; vector<int> ret; if(p.size() > s.size()) return ret; for(int i = 0; i < p.size(); i++) { pcnt[p[i] - 'a']++; scnt[s[i] - 'a']++; } int zerocnt = 0; for(int i = 0; i < 26; i++) { scnt[i] = scnt[i] - pcnt[i]; if(scnt[i] == 0) { zerocnt++; } } if(zerocnt == 26) { ret.push_back(0); } for(int i = 1; i < s.size() - p.size() + 1; i += 1) { int& a = scnt[s[i-1] -'a']; int& b = scnt[s[i + p.size() - 1]- 'a']; if(a == 0) { zerocnt--; } if(b == 0) { zerocnt--; } int& sub = --a; int& add = ++b; if(sub == 0) { zerocnt++; } if(add == 0) { zerocnt++; } if(zerocnt == 26) { ret.push_back(i); } } return ret; }};어제랑 똑같은 풀이로 푸는거라 슬라이딩윈도우로 풀어봤음
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.