Coding Test Java
인프런 - 모든 아나그램 찾기
by seonggu
2024. 1. 22.
import java.util.*;
class Main {
public int solution(String a, String b){
int answer=0;
HashMap<Character, Integer> am=new HashMap<>();
HashMap<Character, Integer> bm=new HashMap<>();
for(char x : b.toCharArray()) bm.put(x, bm.getOrDefault(x, 0)+1);
int L = b.length()-1;
for(int i=0; i<L; i++) {
am.put(a.charAt(i), am.getOrDefault(a.charAt(i), 0)+1);
}
int lt =0;
for(int rt=L; rt<a.length(); rt++){
am.put(a.charAt(rt), am.getOrDefault(a.charAt(rt), 0)+1);
// 키값으로 비교 배열이지만 그대로쓰면 String처럼 쓸 수 있음.
if(am.equals(bm)) answer++;
// a.chatAt(lt)에 해당하는 key값의 value -1
am.put(a.charAt(lt), am.get(a.charAt(lt))-1);
// lt 값이 0이면 카운팅되지 않게 삭제.
if(am.get(a.charAt(lt)) == 0) am.remove(a.charAt(lt));
lt++;
}
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));
}
}