더북(TheBook)

 

13회문 찾기 [큐와 스택]

 

◼︎ 13-1 문자열 앞뒤를 서로 비교하여 회문인지 확인

 

◉ 예제 소스 e13-1-palindrome.py

# 주어진 문장이 회문인지 확인(문자열의 앞뒤를 서로 비교)

# 입력: 문자열 s

# 출력: 회문이면 True, 아니면 False

 

def palindrome(s):

    i = 0           # 문자열의 앞에서 비교할 위치

    j = len(s) - 1  # 문자열의 뒤에서 비교할 위치

    while i < j:    # 중간까지만 검사하면 됨

        # i 위치에 있는 문자가 알파벳 문자가 아니면 뒤로 이동

        if s[i].isalpha() = = False:

            i += 1

        # j 위치에 있는 문자가 알파벳 문자가 아니면 앞으로 이동

        elif s[j].isalpha() = = False:

            j -= 1

        # i와 j 위치에 둘 다 알파벳 문자가 있으면 두 문자를 비교하고 다르면 회문이 아님

        elif s[i].lower() != s[j].lower():

            return False

        # i와 j 위치에 두 문자를 비교하고 같으면 다음 비교 대상으로 넘어감

        else:

            i += 1

            j -= 1

 

    return True

 

print(palindrome("Wow"))

print(palindrome("Madam, I’m Adam."))

print(palindrome("Madam, I am Adam."))

 

◉ 실행 결과

True

True

False

 

 

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.