https://leetcode.com/problems/valid-anagram
결과 : 성공
풀이시간 : 7분
문자열 s를 입력받아 각 문자열에 들어있는 알파벳들의 개수를 셉니다.
알파벳은 소문자만 가능하기 때문에 26 크기의 int 배열 alpha
에 각 알파벳이 나온 횟수를 저장합니다.
문자열 t를 입력받아, 각 문자열을 하나씩 확인합니다.
확인한 문자열이 alpha에 존재하면 크기를 하나 줄여줍니다.
만약 확인한 문자열이 alpha에 존재하지 않으면 결과는 false가 됩니다.
간단한 문제라 수도코드는 생략하겠습니다.
class Solution {
public boolean isAnagram(String s, String t) {
// 길이가 다르면 Anagram이 될 수 없습니다.
if (s.length() != t.length()) {
return false;
}
int[] alpha = new int[26];
char[] chars = s.toCharArray();
for(char each: chars) {
alpha[(int) each - 'a'] += 1;
}
char[] charsAboutT = t.toCharArray();
boolean answer = true;
for(char each: charsAboutT) {
// 확인하는 문자가 alpha에 들어있는지 확인합니다
if (alpha[(int) each - 'a'] == 0) {
answer = false;
break;
}
alpha[(int) each - 'a'] -= 1;
}
return answer;
}
}