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

Vaibhav Vaibhav 2023년10월10일
  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
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