Let's say the x = 123.
int rev = 0;
rev = rev * 10 + x % 10; // rev = 3, 1st iteration.
x = x/10; // x = 12
rev = rev * 10 + x % 10; // rev = 3 * 10 + 2 = 32, 2nd iteration
x = x/10; // x = 1
rev = rev * 10 + x % 10; // rev = 32 * 10 + 1 = 321, 3rd iteration.
x = 0 so the loop terminates after 3 iterations for 3 digits.
Условные выражения в проверке l oop проверяют, не превысят ли обратные значения то, что может содержать 32-битное число.
Так что log10(n)
точно по той причине, которую вы указали в ваш вопрос. Лог числа n
для данной базы - это exponent
, необходимый для возведения base
обратно в число n
. И показатель степени является приближением number of digits
в числе.
На основании вашего комментария можно было бы также сказать, что «Для любого числа n
, где m
- это number of digits in n
, сложность времени O(m)
. "