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

Python OrderedDict()로 문자열 내 문자 순서 확인하기

문자열 안의 문자들이 특정 패턴과 동일한 순서로 등장하는지 확인해야 하는 경우, collections 모듈의 OrderedDict를 활용하면 간단하게 해결할 수 있습니다. OrderedDict는 키가 삽입된 순서를 그대로 유지하는 자료구조이기 때문에 문자열의 문자 순서 검증에 특히 적합합니다.

아래는 실제 구현 예제입니다.

예제 코드

from collections import OrderedDict

def check_order(my_input, my_pattern):
    my_dict = OrderedDict.fromkeys(my_input)
    pattern_length = 0
    for key, value in my_dict.items():
        if key == my_pattern[pattern_length]:
            pattern_length += 1
        if pattern_length == len(my_pattern):
            return '패턴의 순서가 올바릅니다'
    return '패턴의 순서가 올바르지 않습니다'

my_input = 'Hi Mark'
input_pattern = 'Ma'
print('입력 문자열:')
print(my_input)
print('확인할 패턴:')
print(input_pattern)
print(check_order(my_input, input_pattern))

실행 결과

입력 문자열:
Hi Mark
확인할 패턴:
Ma
패턴의 순서가 올바릅니다

코드 설명

  • collections 모듈에서 OrderedDict 클래스를 가져옵니다.

  • 입력 문자열과 확인할 패턴, 두 개의 매개변수를 받는 check_order 함수를 정의합니다.

  • fromkeys 메서드를 사용해 입력 문자열의 각 문자를 키로 가지는 순서형 딕셔너리를 생성합니다. 이 과정에서 중복된 문자는 자동으로 제거되고 첫 등장 순서만 유지됩니다.

  • 패턴의 진행 상황을 추적할 pattern_length 변수를 0으로 초기화합니다.

  • 딕셔너리의 각 키(문자)를 순회하면서, 현재 비교 대상인 패턴 문자와 일치하면 pattern_length를 1씩 증가시킵니다.

  • pattern_length가 패턴의 전체 길이에 도달하면 패턴의 모든 문자가 순서대로 발견된 것이므로 순서가 올바르다는 메시지를 반환하고, 문자열 순회가 끝날 때까지 조건을 만족하지 않으면 순서가 틀렸다는 메시지를 반환합니다.

  • 최종 결과 메시지가 콘솔에 출력됩니다.

참고로 Python 3.7부터는 일반 dict도 삽입 순서를 유지하지만, 순서 보장을 명시적으로 표현해야 하거나 이전 버전과의 호환성이 필요한 경우에는 OrderedDict를 사용하는 것이 좋습니다. 또한 이 알고리즘은 문자열을 한 번만 순회하므로 시간 복잡도가 O(n)으로 매우 효율적입니다.