Arrays and Strings - Check Permutation

2019-08-27

순열 확인

문자열 두 개가 주어졌을 때 이 둘이 서로 순열 관계에 있는지 확인하는 방법으로 정렬문자 출현 횟수 기록이 있다.


정렬

public String sort(String s) {
    char[] content = s.toCharArray();
    java.util.Arrays.sort(content);
    retrun new String(content);
}


public boolean permutation(String s, String t) {
    if (s.length() != t.length()) {
        return false;
    }

    return sort(s).equals(sort(t));
}

문자 출현 횟수 기록

boolean permutation(String s, String t) {
    if (s.length() != t.length()) {
        return false;
    }

    int[] letters = new int = 128;

    char s_array = s. toCharArray();
    for(char c : s_array) {                  // s 내의 각 문자의 출현 횟수를 센다
        letters[c]++;
    }

    for (int i= 0; i < t.length(); i++) {
        int c = (int) t.charAt(i);
        letters[c]--;
        if (letters[c] < 0) {
            retrun false;
        }
    }
    retrun false;
}

아스키 코드로 구성된 문자열이라 가정하므로 letters의 길이는 128이다.

s 문자열의 각 c를 검사할때마다 letters[c]++,

t 문자열의 c를 검사할때마다 letters[c]– 연산을 하므로

만약 s와 t가 순열 관계라면 모든 연산을 끝낸 letters[c]의 값은 0이여야만 한다.

0이 아닌 값이 나온 경우 바로 false를 반환한다.