JustDoEat

[Python/String-Manipulation]Valid Palindrome 본문

카테고리 없음

[Python/String-Manipulation]Valid Palindrome

kingmusung 2023. 11. 22. 19:53

펠린드롬이란 ?


팰린드롬"은 주어진 문자열을 앞으로 읽든 뒤로 읽든 동일한 문자열인 경우를 말합니다. 다만, 팰린드롬 여부를 판단할 때 대소문자의 차이나 알파벳 이외의 문자는 무시하며, 숫자와 문자만을 고려합니다

 

str = "A man, a plan, a canal: Panama"
upperstr = ''.join(c.upper() for c in str if c.isalnum())

reversedstr = ""
for i in range(len(upperstr) - 1, -1, -1):
    reversedstr += upperstr[i]

if upperstr == reversedstr:
    print("true")
    else:         print("false")

 

upperstr = ''.join(c.upper() for c in str if c.isalnum())


이 코드는 문자열에서 알파벳과 숫자만 추출하여 대문자로 변환하는 부분입니다

 

1. for c in str: 문자열 str을 한 글자씩 반복합니다.
2. if c.isalnum(): 해당 글자 c가 알파벳이나 숫자인지를 확인합니다. isalnum() 함수는 알파벳 또는 숫자이면 True를 반환합니다.
3. c.upper(): 알파벳인 경우에는 대문자로 변환합니다.
4. ''.join(...): 위에서 생성된 문자들을 빈 문자열에 합칩니다.

 

 

 

 

슬라이스를 사용하여 문자열을 역순으로 순회

str = "A man, a plan, a canal: Panama"
upperstr = ''.join(c.upper() for c in str if c.isalnum())

reversedstr = upperstr[::-1]


if upperstr == reversedstr:
    print("true")
    else:
        print("false")

 

슬라이스란?

 

예시) upperstr[start:stop:step]

 

start: 슬라이스의 시작 인덱스를 나타냅니다. 이 값은 포함됩니다.
stop: 슬라이스의 끝 인덱스를 나타냅니다. 이 값은 포함되지 않습니다.
step: 슬라이스의 간격을 나타냅니다.