Leetcode Java Valid Anagram
업데이트:
문제
코드
class Solution {
public boolean isAnagram(String s, String t) {
int[] alphabet = new int[26];
for (char c : s.toCharArray()) {
alphabet[c - 'a']++;
}
for (char c : t.toCharArray()) {
alphabet[c - 'a']--;
}
for (int idx = 0; idx < alphabet.length; idx++) {
if (alphabet[idx] != 0) {
return false;
}
}
return true;
}
}
결과
설명
- 주어진 문자열 s와 t를 이용하여 아나그램(Anagram)인지 검증하는 문제이다.
- 아나그램(Anagram)이란 한 문자열을 재 배열하여 만드는 문자열이다.
-
정수 배열인 alphabet을 영소문자의 개수인 26개 사이즈로 정의한다.
- 주어진 문자열 s의 각 문자를 활용하여 alphabet 배열 내 각 위치의 값을 증가시킨다.
- s를 한 문자씩 떼어 ‘a’를 뺀 숫자는 a(0)~z(25)까지 존재하므로, 해당 위치의 값을 증가시켜 개수를 가산한다.
- 주어진 문자열 t의 각 문자를 활용하여 alphabet 배열 내 각 위치의 값을 감소시킨다.
- s를 한 문자씩 떼어 ‘a’를 뺀 숫자는 a(0)~z(25)까지 존재하므로, 해당 위치의 값을 감소시켜 개수를 감산한다.
-
alphabet 배열을 처음부터 끝까지 확인하여 특정 위치의 값이 0이 아닌 경우 주어진 문자열 t는 s를 이용하여 아나그램으로 만들 수 없는 문자열이므로, 주어진 문제의 결과로 false를 반환한다.
- 반복이 완료되면 주어진 문자열 t는 s를 이용하여 아나그램으로 만들 수 있는 문자열이므로, 주어진 문제의 결과로 true를 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기