Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 두 문자열의 공통 문자를 알파벳 순서로 출력하는 방법

사용자가 입력한 두 개의 문자열이 주어졌을 때, 두 문자열에 공통으로 포함된 문자들을 알파벳 순서로 정렬하여 출력하는 것이 이번 튜토리얼의 목표입니다.

예제

입력:
string1: python
string2: program
출력: op

설명

두 문자열 사이에서 공통으로 나타나는 문자는 o(1회)와 p(1회)입니다. 따라서 최종 결과는 알파벳 순서대로 정렬된 "op"가 됩니다.

알고리즘

Step 1: 사용자로부터 두 개의 문자열을 입력받습니다.
Step 2: 두 문자열을 각각 Counter 딕셔너리로 변환합니다.
Step 3: intersection(&) 연산자를 사용하여 두 문자열 간의 공통 요소를 찾습니다.
Step 4: 결과 역시 Counter 딕셔너리 형태이며, 공통 문자가 키(key)로, 공통 빈도수가 값(value)으로 저장됩니다.
Step 5: Counter 딕셔너리의 elements() 메서드를 사용하여 각 키를 해당 빈도수만큼 반복해 리스트로 확장합니다.
Step 6: 리스트를 오름차순으로 정렬하여 결과 문자열을 알파벳 순서로 만듭니다.
Step 7: 문자들을 공백 없이 연결(join)하여 최종 결과 문자열을 생성합니다.

예제 코드

from collections import Counter

def common(str1, str2):
    d1 = Counter(str1)
    d2 = Counter(str2)
    cdict = d1 & d2
    if len(cdict) == 0:
        print(-1)
        return
    cchars = list(cdict.elements())
    cchars = sorted(cchars)
    print("Common characters are ::>", ''.join(cchars))

# Driver program
if __name__ == "__main__":
    s1 = input("Enter first string")
    s2 = input("Enter second string")
    common(s1, s2)

코드 설명

위 코드에서 Counter는 collections 모듈에서 제공하는 클래스로, 문자열 내 각 문자의 출현 빈도를 자동으로 계산해 딕셔너리 형태로 저장합니다. 두 Counter 객체에 &(교집합) 연산을 적용하면 양쪽 문자열 모두에 존재하는 문자와 그 최소 빈도수를 얻을 수 있습니다. 만약 공통 문자가 하나도 없다면 -1을 출력하고 함수를 종료합니다. elements() 메서드는 각 문자를 빈도수만큼 반복하여 반환하며, sorted()로 정렬한 뒤 join()으로 하나의 문자열로 합칩니다.

실행 결과

Enter first string python
Enter second string program
Common characters are ::> op