Python을 사용하여 두 문자열이 아나그램인지 확인

  1. Python에서 정렬을 사용하여 두 문자열이 아나그램인지 확인
  2. Python에서 주파수 사전을 사용하여 두 문자열이 아나그램인지 확인
Python을 사용하여 두 문자열이 아나그램인지 확인

아나그램은 다른 단어의 철자를 재배열하여 형성된 단어입니다.

예를 들어 racecare, listen, silent, friedfired, kneekeen은 몇 가지 아나그램 쌍입니다. dadbad, applemango, helloworld는 아나그램이 아닙니다.

프로그래밍 언어를 사용하여 두 문자열이 서로의 아나그램인지 여부를 빠르게 확인할 수 있습니다.

이 기사에서는 두 문자열이 아나그램인지 Python을 사용하지 않는지 확인하는 방법을 보여줍니다. 우리는 같은 것에 대한 몇 가지 접근 방식에 대해 이야기 할 것입니다.

Python에서 정렬을 사용하여 두 문자열이 아나그램인지 확인

두 문자열이 아나그램인지 여부를 확인하기 위해 두 문자열을 정렬하고 동일한지 여부를 확인할 수 있습니다. 동일한 내용은 다음 코드를 참조하십시오.

코드의 시간 복잡도는 정렬로 인해 O(nlogn)이고 공간 복잡도는 값을 저장하지 않기 때문에 O(1)입니다.

def check_anagram(a, b):
    if a is None or b is None or len(a) != len(b):
        return "Not Anagram"

    return "Anagram" if sorted(a) == sorted(b) else "Not Anagram"


print(check_anagram("keen", "knee"))
print(check_anagram("race", "care"))
print(check_anagram("fried", "fired"))
print(check_anagram("apple", "paddle"))
print(check_anagram("first", "second"))
print(check_anagram(None, "second"))
print(check_anagram("first", None))
print(check_anagram(None, None))

출력:

Anagram
Anagram
Anagram
Not Anagram
Not Anagram
Not Anagram
Not Anagram
Not Anagram

Python에서 주파수 사전을 사용하여 두 문자열이 아나그램인지 확인

두 문자열이 아나그램인지 확인하기 위해 두 문자열에 있는 문자 수를 유지하고 그 수를 비교할 수 있습니다. 동일하다면 두 문자열이 아나그램임을 의미합니다. 그렇지 않으면 그렇지 않습니다.

동일한 내용은 다음 코드를 참조하십시오.

두 문자열을 반복하므로 다음 솔루션의 시간 복잡도는 O(n)입니다. 사전에 요소를 추가하고 요소를 검색하는 평균 시간 복잡도는 O(1)입니다.

또한 동일한 수의 키를 가진 두 사전을 비교하는 것은 O(n)입니다. 그리고 공간 복잡도는 O(n)입니다. 왜냐하면 우리는 두 개의 딕셔너리를 유지하고 있고, 딕셔너리는 배후에서 키와 값을 저장하기 위해 배열을 사용하기 때문입니다.

def check_anagram(a, b):
    if a is None or b is None or len(a) != len(b):
        return "Not Anagram"

    counts_a = {}
    counts_b = {}

    for x in a:
        if x not in counts_a.keys():
            counts_a[x] = 1
        else:
            counts_a[x] += 1

    for x in b:
        if x not in counts_b.keys():
            counts_b[x] = 1
        else:
            counts_b[x] += 1

    return "Anagram" if counts_a == counts_b else "Not Anagram"


print(check_anagram("keen", "knee"))
print(check_anagram("race", "care"))
print(check_anagram("fried", "fired"))
print(check_anagram("apple", "paddle"))
print(check_anagram("first", "second"))
print(check_anagram(None, "second"))
print(check_anagram("first", None))
print(check_anagram(None, None))

출력:

Anagram
Anagram
Anagram
Not Anagram
Not Anagram
Not Anagram
Not Anagram
Not Anagram
튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

관련 문장 - Python String