使用Python,反转一个整数并确定它是否是回文。这是我对反向和回文的定义。我有正确的逻辑吗?
def reverse(num):
s=len(num)
newnum=[None]*length
for i in num:
s=s-1
newnum[s]=i
return newnum
def palindrome(num):
a=str(num)
l=len(z)/2
if a[:1]==a[-1:][::-1]:
b=True
else:
b=False
我在编写def main
时遇到了一些麻烦。
答案 0 :(得分:46)
def palindrome(num):
return str(num) == str(num)[::-1]
答案 1 :(得分:16)
整数不具有len()。
测试数字是否为回文就像测试数字是否等于反向一样简单(尽管如果你想要最高效率,你可以只比较字符串两端的字符,直到到达中间)。
要找到整数的反转,你可以用硬方式(使用mod%和整数除法//找到每个数字并构造反向数字):
def reverse(num):
rev = 0
while num > 0:
rev = (10*rev) + num%10
num //= 10
return rev
或者简单的方法(将数字转换为字符串,使用切片表示法反转字符串并将其转回整数):
def reverse(num):
return int(str(num)[::-1])
答案 2 :(得分:1)
这是一个不可读的单行递归实现,部分基于answer by pedrosorio。
def reverse(i):
return int(i!=0) and ((i%10)*(10**int(math.log(i,10))) + reverse(i//10))
def is_palindrome(i):
return i == reverse(i)
适用于整数i ≥ 0
。
请注意reverse(123) == reverse(1230) == 321
。这不是问题,因为任何以0结尾的非零整数都不能成为回文。
另请注意,完整的整数反转当然不一定是确定它是否是回文。如果确定该数字不是回文,则可以实施逆转以便提前中止。
答案 3 :(得分:1)
长但可读:
def palindrome(x):
a=""
x=str(x)
for i in range(len(x),0,-1):
a+=x[i-1]
print a
if a==x:
return True
else:
return False
答案 4 :(得分:1)
def revers(num):
rev = 0
while(num > 0):
rem = num %10
rev = (rev *10) + rem
num = num //10
return num
答案 5 :(得分:0)
我使用了这个程序的列表,也使用了字符串。
print('Enter Something')
a = list(input())
for i in range ((len(a)),0,-1):
print (a[i-1],end='')
答案 6 :(得分:0)
import math
a = raw_input("Enter number:")
n = -1
reverse = 0
for i in a:
n += 1
digit = math.pow(10,n)
reverse = int(i)*digit + reverse
print int(reverse)
if int(reverse) == int(a):
print "Palindrome"
else:
print ":("
答案 7 :(得分:0)
此代码将int转换为String,然后检查字符串是否为pallindrome。它的优点是速度快,缺点是它将int转换为String,从而妥协于完美的问题解决方案。
它也处理negative int
。
class Solution:
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
s = str(x)
if x >=0 :
if s == s[::-1]:
return True
else:
return False
else:
return False
答案 8 :(得分:0)
t=int(input("enter nos of test cases= "))
while t>0:
n=int(input("enter number="))
rev=0
while n>0:
digit=n%10
rev=rev*10+digit
n=n//10
print(rev)
t-=1
答案 9 :(得分:0)
这是我的解决方法。
z=input('input number')
if int(z) == int(str(z)[::-1]):
print('The number is palindrome')
else:
print('The number is not palindrome')
答案 10 :(得分:0)
反转整数并确定它是否是回文:
查看代码:
number = 1221
reverse = ''.join(reversed(str(number)))
print(reverse)
if (int(reverse) == number):
print("number is Palindrome")
else:
print("number is not Palindrome")
答案 11 :(得分:-2)
我试着自己出来。
def number():
n = int(input("Enter a number: "))
return n
def reverse(n):
total = ""
while n > 0:
a = n % 10
n//= 10
total+= str(a)
return total
def palindrome (n):
total = 0
while n > 0:
a = n % 10
n//= 10
total+= a
if total == n:
x = "This number has a palindrome"
else:
x = ""
return x
n = number()
print (reverse(n))
print (palindrome(n))
答案 12 :(得分:-2)
original = raw_input("Enter a no = ") #original = number entered by user
rev = original[::-1] #rev = reverse of original by useing scope resolution
print 'rev of original no =',rev
if original == rev:
print "no's are equal"
else:
print "no's are not equal"