Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 주어진 N에서 회문 문자열을 생성할 수 있는지 확인

<시간/>

숫자 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