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

파이썬으로 문자열이 회문(Palindrome)인지 확인하는 방법

주어진 문자열 s가 회문(palindrome)인지 아닌지 판별해야 합니다. 회문이란 앞에서 읽으나 뒤에서 읽으나 동일한 단어나 문장을 의미합니다.

예를 들어 입력이 s = "racecar"라면, 이 문자열은 거꾸로 읽어도 "racecar"이므로 출력 결과는 True가 됩니다.

풀이 접근 방법

이 문제는 다음 단계로 간단히 해결할 수 있습니다.

  • 문자열 s의 역순(reversed) 버전을 변수 t에 저장합니다.
  • 만약 ts가 같다면 True를 반환합니다.
  • 그렇지 않다면 False를 반환합니다.

파이썬의 슬라이싱(slicing) 기법 [::-1]을 사용하면 별도의 반복문 없이 문자열을 손쉽게 뒤집을 수 있어 코드가 매우 간결해집니다.

구현 예제

class Solution:
    def solve(self, s):
        t = s[::-1]
        if t == s:
            return True
        else:
            return False

ob = Solution()
print(ob.solve("racecar"))

입력

"racecar"

출력

True

추가 설명

s[::-1]은 파이썬 슬라이싱 문법으로, 시작과 끝 인덱스를 생략하고 스텝을 -1로 지정하여 문자열 전체를 역순으로 만듭니다. 시간 복잡도는 O(n)이며, 공간 복잡도 역시 뒤집힌 문자열을 저장하기 위해 O(n)입니다.

메모리 사용을 줄이고 싶다면 양쪽 끝에서부터 포인터를 이동시키며 문자를 비교하는 두 포인터(two-pointer) 기법을 사용할 수도 있습니다. 이 경우 추가 공간 없이 O(n) 시간에 회문 여부를 판별할 수 있습니다.