2015-10-17 2 views
0

Я думал о том, чтобы повернуть вспять целое, и я пришел с этим:Обратный алгоритм номер

num = 123456 
power = len(str(num)) 
result = 0 
for i in range(1, power): 
    result += (num % 10) * 10**(power - i) 
    num = int(num/10) 
result += num 

print(result) 

Я шел через алгоритмы других людей, и я не видел никого, используя этот метод с экспонент.

Например его один не мой:

public long reverse(long x) 
    { 
     long result = 0; 
     while (x != 0) 
     { 
      result = result * 10 + x % 10; 
      x = x/10; 
     } 
     return result; 
    } 

Является ли мой алгоритм хуже? Например, потребуется больше времени для вычисления обратного числа из-за экспоненциальной части?

+1

'str (num) [:: - 1]' –

+0

Я должен был уточнить, что хочу отменить число как число, а не строка. Это не предназначалось для того, чтобы быть полезным. –

ответ

2

Циклы while и for проходят одинаковое количество итераций в обоих решениях. Поэтому он не уступает в этом смысле.

Ваше решение содержит преобразование из числа в строку, поэтому да, которого можно избежать. Но так как Python позволяет вам делать такие преобразования легко, и если это улучшает читаемость вашего кода, это не делает ваш код хуже, на мой взгляд. Хотя, сказав, что рассмотрим решение, предложенное в комментариях к вопросу :)

+1

О, я понимаю. Теперь решение кажется глупым. Я хотел изменить целое число, используя только математику, но я все равно преобразовал ее в строку. Второе решение - чистая математика, поэтому я думаю, что так лучше. –

Смежные вопросы