[LeetCode#242] Valid Anagram

2024. 9. 29. 21:54·Algorithm/문제풀이

❒ Description


날짜 2024.09.29 (일)
레벨 Easy
제목 Valid Anagram
링크 https://leetcode.com/problems/valid-anagram/description
알고리즘 정렬
시간 복잡도 O(N)

 

 

 

 

 

❒ Solution


1. Map counter

public boolean isAnagram(String s, String t) {
    // 예외
    if (s.length() == 1) {
        return s.equals(t);
    }

    // create counter map
    Map<Character, Integer> counter = new HashMap<>();
    for (int i = 0; i < s.length(); i++) {
        char letter = s.charAt(i);
        counter.put(letter, counter.getOrDefault(letter, 0) + 1);
    }

    // t 순회하면서 counter 갱신
    for (int i = 0; i < t.length(); i++) {
        char letter = t.charAt(i);
        if (counter.containsKey(letter)) {
            counter.put(letter, counter.get(letter) - 1);
        } else {
            // counter map에 없는 letter는 새로 추가
            counter.put(letter, counter.getOrDefault(letter, 0) + 1);
        }
    }

    // value != 0 ? false
    for (Map.Entry<Character, Integer> entry : counter.entrySet()) {
        if (entry.getValue() != 0) {
            return false;
        }
    }
    return true;
}

 

 

2. Sorting

※ 새롭게 안 사실
new String(array)를 하면 배열을 쉽게 문자열로 변환 가능하다.
public boolean isAnagram(String s, String t) {
    return sort(s).equals(sort(t));
}

private String sort(String s) {
    char[] array = s.toCharArray();
    Arrays.sort(array);
    return new String(array);
}

 

 

3. 배열을 이용한 counter

count[c - 'a']는 응근 유용하게 써먹을 수 있을거 같다.
public boolean isAnagram(String s, String t) {
    int[] count = new int[26];
    for (char c : s.toCharArray()) count[c - 'a']++;
    for (char c : t.toCharArray()) count[c - 'a']--;
    for (int answer : count) {
        if (answer != 0) {
            return false;
        }
    }
    return true;
}

 

 

 

 

 

 


'Algorithm > 문제풀이' 카테고리의 다른 글

[LeetCode#33] Search in Rotated Sorted Array  (0) 2024.10.01
[LeetCode#75] Sort Colors  (0) 2024.10.01
[LeetCode#179] Largest Number  (0) 2024.09.29
[LeetCode#147] Insertion Sort List  (0) 2024.09.28
[LeetCode#56] Merge Intervals  (0) 2024.09.27
'Algorithm/문제풀이' 카테고리의 다른 글
  • [LeetCode#33] Search in Rotated Sorted Array
  • [LeetCode#75] Sort Colors
  • [LeetCode#179] Largest Number
  • [LeetCode#147] Insertion Sort List
gilbert9172
gilbert9172
gilbert9172 님의 블로그 입니다.
  • gilbert9172
    バックエンド
    gilbert9172
  • 전체
    오늘
    어제
    • All Categories (181)
      • 우테코 7기 (21)
        • 1주차 (8)
        • 2주차 (5)
        • 3주차 (6)
      • Langauge (4)
        • Java (3)
        • Kotlin (1)
      • Back-End (13)
        • SpringBoot (1)
        • Trouble Shooting (0)
        • Setup & Configuration (1)
        • SQL (3)
        • Redis (8)
      • Architecture (6)
        • Multi Module (1)
        • DDD (5)
      • CS (30)
        • Data Structure (6)
        • Operating System (0)
        • Network (12)
        • Database (10)
        • Design Pattern (2)
      • Algorithm (78)
        • 내용 정리 (18)
        • 문제풀이 (60)
      • DevOps (6)
        • AWS (5)
        • Git (1)
      • Front-End (1)
        • Trouble Shooting (1)
      • Project (6)
        • 페이스콕 (6)
      • Book (15)
        • 이벤트 기반 마이크로서비스 구축 (6)
        • 친절한 SQL 튜닝 (5)
        • Spring Batch Docs (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부분단조성
    greedy
    binarysearch
    오블완
    Back-Tracking
    Two-Pointer
    sliding-window
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
gilbert9172
[LeetCode#242] Valid Anagram
상단으로

티스토리툴바