The Next Palindrome number

前端 未结 11 1813
走了就别回头了
走了就别回头了 2021-01-17 07:23

I am beginner in programming, So can you please tell me what\'s wrong with my code?

I want to print next palindrome number if the number entered by the user (n) is n

11条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-01-17 07:33

    def nearest_palindrome(number):
        n = len(str(number))//2
        if(len(str(number)) % 2 == 0):
            #number like 1221
            number_1 = int((str(number))[:n]) #12
            number_2 = int((str(number))[n:]) #21
            if(number_1 < number_2):
                number_1 += 1
                number_2 = int(str(number_1)[::-1])
            else:
                number_2 = int(str(number_1)[::-1])
            # if last half part is zero then just reverse the first number
            if number_2 == 0:
                number_2 = str(number_1)[::-1]
            #combining the both parts
            ans = int(str(number_1) + str(number_2))
            return ans
        else:
            #numer like 12510   n=2
            nu = int((str(number))[:n+1]) #add in this number
            number_1 = int((str(number))[:n])  # 12
            number_2 = int((str(number))[n+1:])  # 21
            if (number_1 < number_2):
                nu += 1
                number_2 = int((str(nu))[::-1][1:])
            else:
                number_2 = int((str(nu))[::-1][1:])
            #if last half part is zero then just reverse the first number
            if number_2 == 0:
                number_2 = str(nu)[::-1]
                number_2 = number_2[1:]
            #combinning both parts
            ans = int(str(nu) + str(number_2))
            return ans
    number=12331
    print(nearest_palindrome(number))
    

提交回复
热议问题