숫자 n이 있다고 가정합니다. 그 숫자에서 알파벳 소문자 문자열을 생성할 수 있는지 확인하고 해당 문자열이 회문인지 여부를 확인해야 합니다. 여기에서는 [a =0, b =1... j =9]에서 j까지의 문자만 사용합니다. 따라서 숫자가 42이면 하위 문자열 "ec"가 6(4+2)자 "ececec"까지 인쇄되고 이것이 회문인지 확인합니다.
따라서 입력이 n =43과 같으면 출력은 True가 됩니다. 문자열은 "ededede"이고 이것은 회문입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- temp :=빈 문자열
- s :=n을 문자열로
- 문자:=j부터 j까지의 모든 문자
- 합계 :=0
- substr :=빈 문자열
- 0 ~ s - 1 크기 범위의 i에 대해
- d :=s[i]를 숫자로
- substr :=substr 연결 문자[d]
- 합계 :=합 + d
- temp <=sum, do
- 의 크기
- temp :=임시 연결 substr
- temp :=temp[인덱스 0에서 합계 - 1까지]
- temp가 회문이면 true를 반환하고, 그렇지 않으면 false를 반환
예
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def isPalindrome(s): return s == s[::-1] def solve(n): temp = "" s = str(n) letters = "abcdefghij" sum = 0 substr = "" for i in range(len(s)) : d = int(s[i]) substr += letters[d] sum += d while len(temp) <= sum: temp += substr temp = temp[:sum] return isPalindrome(temp) n = 43 print (solve(n))
입력
43
출력
True