애너그램 체크이다, 두 개의 문자가 주어지고, 한 문자와 다른 문자가 동일한 알파벳으로 구성된 상태를 의미한다.

제한사항 중 주어지는 문자는 오로지 알파벳 소문자 이기 때문에  알파벳 배열을 만들어서 해결하자.

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

        int[] count = new int[26];

        for (int i = 0; i < s.length(); i++) {
            count[s.charAt(i) - 'a']++;
        }
        
        for (int i = 0; i < t.length(); i++) {
            count[t.charAt(i) - 'a']--;
            
            if (count[t.charAt(i) - 'a'] < 0) {
                return false;
            }
        }
        return true;
    }
}

알파벳 배열을 선정해주고 한 문자열에서 ++ 다른 문자열에서 -- 를 진행해준다. 만약 -- 과정 중 현재 얻어온 값이 0 보다 작다면? 고민할 것 없이 바로 false 날려주면 된다.

 

다른 좋은 풀이도 있어 소개해볼까 한다.

lass Solution {
    public boolean isAnagram(String s, String t) {
      if(s.length() != t.length())return false;
      char[] s1 = s.toCharArray();
      char[] t1 = t.toCharArray();
      Arrays.sort(s1);
      Arrays.sort(t1);
      for(int i=0;i<s1.length;i++){
        if(s1[i] != t1[i])return false;
      }
      return true;
  }
}

문자 들을 char 배열로 바꾼후 소팅한 후 비교하면 된다 쉽고 직관적인 풀이가 아닐 수 없다.

'PS > LeetcCode' 카테고리의 다른 글

33. Search in Rotated Sorted Array  (0) 2022.07.04
34. Find First and Last Position of Element in Sorted Array  (0) 2022.07.03
53. Maximum Subarray  (0) 2022.06.29
383. Ransom Note  (0) 2022.06.26
387. First Unique Character in a String  (0) 2022.06.26

+ Recent posts