ยกเว้นการทำให้ตัวเลขเป็นสตริงแล้วย้อนกลับสตริง
ทำไมต้องยกเลิกการแก้ปัญหานั้น? มันเป็นเรื่องง่ายที่จะใช้และสามารถอ่านได้ หากคุณถูกถามโดยไม่มีคอมพิวเตอร์อยู่ในมือว่า2**10-23
เป็นพาลินโดรมทศนิยมหรือไม่คุณก็ต้องทดสอบด้วยการเขียนเป็นทศนิยม
อย่างน้อยที่สุดใน Python สโลแกน 'การดำเนินการสตริงช้ากว่าเลขคณิต' นั้นเป็นเท็จ ฉันเปรียบเทียบอัลกอริธึมทางคณิตศาสตร์ของ Smink กับการกลับรายการสตริงอย่างง่ายint(str(i)[::-1])
ของการกลับสตริงง่าย ความเร็วไม่มีความแตกต่างกันอย่างมีนัยสำคัญเกิดขึ้นการกลับตัวของสตริงเร็วขึ้นเล็กน้อย
ในภาษาคอมไพล์ (C / C ++) สโลแกนอาจมีอยู่ แต่ก็มีความเสี่ยงที่จะเกิดข้อผิดพลาดมากเกินไปซึ่งมีจำนวนมาก
def reverse(n):
rev = 0
while n > 0:
rev = rev * 10 + n % 10
n = n // 10
return rev
upper = 10**6
def strung():
for i in range(upper):
int(str(i)[::-1])
def arithmetic():
for i in range(upper):
reverse(i)
import timeit
print "strung", timeit.timeit("strung()", setup="from __main__ import strung", number=1)
print "arithmetic", timeit.timeit("arithmetic()", setup="from __main__ import arithmetic", number=1)
ผลลัพธ์เป็นวินาที (ต่ำกว่าดีกว่า):
เครียด 1.50960231881 เลขคณิต 1.69729960569