Lecture4_4

public class Lecture4_4 {

    public static void main(String[] args) {

        // 값 받기
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        String t = sc.next();

        // 출력
        int result = countAna(s, t);
        System.out.println(result);

    }

    private static int countAna(String s, String t) {

        // 카운트를 위한 변수
        int count = 0;
        // 초기화를 위한 변수
        String sInit = s;
        // 부분 문자열을 담을 HashMap
        HashMap<Integer, String> sPartHM = new HashMap<>();

        // 부분 문자열 HashMap 만들기
        for (int i = 0; i < s.length() - t.length() + 1; i++) {
            // 앞에서부터 t의 길이만큼만 문자열을 추출하여
            String sPart = s.substring(i, i + t.length());
            // HashMap에 담자
            sPartHM.put(i, sPart);
            // 초기화
            s = sInit;
        }

//        for (Map.Entry<Integer, String> entrySet : sPartHM.entrySet()) {
//            System.out.println(entrySet.getKey() + " : " + entrySet.getValue());
//        }

        // HashMap의 문자열 value와 문자열 t랑 비교하여 아나그램이면 count++
        for (Map.Entry<Integer, String> entrySet : sPartHM.entrySet()) {
            if (isAna(entrySet.getValue(), t)) {
                count++;
            }
        }

        return count;
    }

    // 아나그램인지 확인
    private static boolean isAna(String value, String t) {

        // 카운트를 위한 변수
        int count = 0;

        // 문자 배열로 바꾸고 오름차순 정렬
        char[] valueArr = new char[value.length()];
        valueArr = value.toCharArray();
        Arrays.sort(valueArr);
        char[] tArr = new char[t.length()];
        tArr = t.toCharArray();
        Arrays.sort(tArr);

        // 각 문자열의 문자들을 비교하여 같으면 count++
        for (int i = 0; i < value.length(); i++) {
            if (valueArr[i] == tArr[i]) {
                count++;
            }
        }

        // 모두 같다면 true를 리턴
        if (count == value.length()) {
            return true;
        } else {
            return false;
        }

    }

}

좋은 웹페이지 즐겨찾기