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를 반환한다.