C++程序 反转数字

C++程序 反转数字

写一个程序,反转一个整数的数字。

C++程序 反转数字

例子:

输入: num = 12345
输出: 54321

输入: num = 876
输出: 678

流程图:

C++程序 反转数字

迭代方式

算法:

输入: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

程序:

// C++ 程序来实现
// 上述方法
#include <bits/stdc++.h>
  
using namespace std;
  
// 迭代函数来
// 反转数字
int reverseDigits(int num)
{
    int rev_num = 0;
    while (num > 0) 
    {
        rev_num = rev_num * 10 + num % 10;
        num = num / 10;
    }
    return rev_num;
}
  
// 主函数
int main()
{
    int num = 4562;
    cout << "反转后的数字是 " <<
             reverseDigits(num);
    getchar();
    return 0;
}  

输出:

反转后的数字是 2654

时间复杂性: O(log(n)), 其中 n 是输入数字。

辅助空间: O(1)

递归方式:

// C++ 程序来反转数字
#include <bits/stdc++.h>
using namespace std;
  
// 递归函数来
// 反转数字
int reverseDigits(int num)
{
    static int rev_num = 0;
    static int base_pos = 1;
    if (num > 0) 
    {
        reverseDigits(num / 10);
        rev_num += (num % 10) * base_pos;
        base_pos *= 10;
    }
    return rev_num;
}
  
// 主程序
int main()
{
    int num = 4562;
    cout << "反转后的数字是 " <<
             reverseDigits(num);
    return 0;
}  

输出:

反转后的数字是2654

时间复杂性: O(log(n))

辅助空间: O(log(n)), 其中 n 是输入数字。

使用reverse()方法

我们将使用reverse()方法反转字符串。

特殊情况

输入:32100

对于上述输入,如果我们尝试通过反转字符串来解决这个问题,那么输出将为 00123。

所以为了解决这种情况,我们需要再次将字符串转换为整数,这样输出就会是 123

// C++程序逆转一个数字
#include <bits/stdc++.h>
using namespace std;
  
int reverseDigits(int num)
{
    // 将数字转换为字符串
    string strin = to_string(num);
  
    // 反转字符串
    reverse(strin.begin(), strin.end());
  
    // 将字符串转换为整数
    num = stoi(strin);
  
    // 返回整数
    return num;
}
  
// 主函数
int main()
{
    int num = 4562;
    cout << "逆转后的数字是 " << 
             reverseDigits(num);
    return 0;
}  

输出:

逆转后的数字是 2654

时间复杂度: O(log 10 n),其中 n 是输入的数字

辅助空间: O(1)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例