C++程序 反转数字
写一个程序,反转一个整数的数字。
例子:
输入: num = 12345
输出: 54321
输入: num = 876
输出: 678
流程图:
迭代方式
算法:
输入:num
(1) 初始化rev_num = 0
(2) 循环,当num > 0时
(a) 将rev_num乘以10并将num除以10的余数加到rev_num上
rev_num = rev_num*10 + num%10;
(b) 将num除以10
(3) 返回rev_num
例子:
num = 4562
rev_num = 0
rev_num = rev_num *10 + num%10 = 2
num = num/10 = 456
rev_num = rev_num *10 + num%10 = 20 + 6 = 26
num = num/10 = 45
rev_num = rev_num *10 + num%10 = 260 + 5 = 265
num = num/10 = 4
rev_num = rev_num *10 + num%10 = 2650 + 4 = 2654
num = num/10 = 0
程序:
输出:
时间复杂性: O(log(n)), 其中 n 是输入数字。
辅助空间: O(1)
递归方式:
输出:
时间复杂性: O(log(n))
辅助空间: O(log(n)), 其中 n 是输入数字。
使用reverse()方法
我们将使用reverse()方法反转字符串。
特殊情况
输入:32100
对于上述输入,如果我们尝试通过反转字符串来解决这个问题,那么输出将为 00123。
所以为了解决这种情况,我们需要再次将字符串转换为整数,这样输出就会是 123
输出:
时间复杂度: O(log 10 n),其中 n 是输入的数字
辅助空间: O(1)