LeetCode Top Interview 150) Valid Anagram

EBAB!·2023년 8월 31일
0

LeetCode

목록 보기
23/35

Question

Given two strings s and t, return true if t is an anagram of s, and false otherwise.

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

Constraints:

  • 1 <= s.length, t.length <= 5 * 10^4
  • s and t consist of lowercase English letters.
class Solution:
    def isAnagram(self, s: str, t: str) -> bool:




알파벳 소문자로만 이루어진 문자열 st가 있고, 둘 사이가 애너그램 관계인지(사용된 문자가 전부 같은지) 여부를 bool값으로 반환하는 문제입니다.

제가 생각한 코드는 다음과 같습니다.

from collections import defaultdict

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        d = defaultdict(int)
        for c in s:
            d[c] += 1
        for c in t:
            d[c] -= 1
        for val in d.values():
            if val != 0:
                return False
        return True
  • 문자 : 등장횟수를 키값으로 가지는 딕셔너리 d를 정의합니다.
  • s에서 등장한 문자만큼 값을 더하고 t에서 등장한 문자만큼 값을 뺍니다.
  • d의 모든 값이 0이라면 두 문자열에서 사용된 문자가 완전히 같으므로 True를 반환하고 중간에 0이 아닌 값이 나온다면 False를 반환합니다.


복잡하게 생각할 것 없이 문자와 그 갯수를 저장하면 되는 문제입니다.
두 문자열의 길이가 다를 때를 고려하여 예외 상황으로 두지 않고 for문을 각각 돌리는 방식으로 작성했습니다.

크게 어려운 점은 없는 문제였습니다.

profile
공부!

0개의 댓글