import java.util.HashMap;
import java.util.Scanner;
public class Main {
public int solution(String a, String b) {
int answer = 0;
HashMap<Character, Integer> am = new HashMap<>();
HashMap<Character, Integer> bm = new HashMap<>();
//bacaAacba
//abc
//bm 먼저 세팅(abc)
for(char x : b.toCharArray()) bm.put(x, bm.getOrDefault(x, 0) + 1);
//b 한개 전만큼 am을 세팅 -> two pointer 사용을 위해서(ba)
int L = b.length()-1; //2
for(int i = 0; i < L; i++) am.put(a.charAt(i), am.getOrDefault(a.charAt(i), 0) + 1);
//two pointer 시작
int lt = 0;
for(int rt=L; rt < a.length(); rt++) {
am.put(a.charAt(rt), am.getOrDefault(a.charAt(rt), 0) + 1);
if(am.equals(bm)) answer ++;
am.put(a.charAt(lt), am.get(a.charAt(lt))-1);
//사이즈로 인식 안되게끔 제거
if(am.get(a.charAt(lt)) == 0) am.remove(a.charAt(lt));
lt++;
}
//rt=2 일때 am은 0,1,2 이것저것 처리및비교 해주고 0번의 키를 가진 인덱스 추가하고 lt를 증가
//rt=3 일때 am은 1,2,3
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
String a = kb.next();
String b = kb.next();
System.out.print(T.solution(a, b));
}
}
'Algorithm > inflearn' 카테고리의 다른 글
#올바른 괄호 (0) | 2021.09.17 |
---|---|
★K번째 큰 수(TreeSet) (0) | 2021.09.16 |
★매출액의 종류(Hash, sliding Window) (0) | 2021.09.15 |
★아나그램(Hash) (0) | 2021.09.15 |
#학급 회장(Hash) (0) | 2021.09.15 |