영숫자 값과 기호가 포함된 문자열이 있다고 가정합니다. 소문자와 대문자도 있습니다. 소문자(대문자는 소문자로 변환)만 고려하여 문자열이 회문을 형성하는지 확인해야 하며, 쉼표와 같은 다른 기호, 공백은 무시됩니다.
문자열이 "A Man, Plan, a Canal:Panama"와 같다고 가정하고 이러한 규칙을 고려하면 "amanaplanacalpanama"가 됩니다. 회문입니다.
이 문제를 해결하려면 다음 단계를 따르십시오 -
- x ="" 정의
- str의 각 문자 c 읽기 -
- c가 소문자 또는 숫자이면 x에 c를 추가합니다.
- 그렇지 않으면 c가 대문자인 경우 소문자로 변환하고 x 뒤에 추가하기만 하면 됩니다.
- x가 회문이면 True를 반환하고 그렇지 않으면 False를 반환합니다.
예
더 나은 이해를 위해 구현을 살펴보겠습니다.
class Solution(object):def isPalindrome(self, s):""" :type s:str :rtype:bool """ x ="" diff =ord('a') - ord('A' ) for i in s:if ord(i)>=ord('a') and ord(i)<=ord('z') or ord(i)>=ord("0") and ord(i) <=ord("9"):x+=i elif ord(i)>=ord('A') 및 ord(i)<=ord('Z'):i =chr(diff+ord(i)) x+=i #print(s) #print(x) return x ==x[::-1]ob1 =Solution()print(ob1.isPalindrome("남자, 계획, 운하:파나마"))사전>입력
="남자, 계획, 운하:파나마"출력
사실