当前位置:实例文章 » 其他实例» [文章]P5705 【深基2.例7】数字反转

P5705 【深基2.例7】数字反转

发布人:shili8 发布时间:2025-02-08 06:27 阅读次数:0

**数字反转**

在计算机科学中,数字反转是指将一个数字的位数颠倒过来。例如,将123 反转后变成321。

**问题描述**

给定一个非负整数,要求输出其数字的反转结果。

**解决方案**

### 方法一:使用字符串我们可以先将数字转换为字符串,然后使用反转函数(如 `reverse()` 或 `split()` 和 `join()`)来颠倒字符串中的字符。最后,将得到的字符串转换回整数。

def reverse_num(n):
 # 将数字转换为字符串 str_n = str(n)
 # 使用反转函数颠倒字符串中的字符 reversed_str_n = str_n[::-1]
 # 将得到的字符串转换回整数 reversed_n = int(reversed_str_n)
 return reversed_n# 测试print(reverse_num(123)) # 输出:321


### 方法二:使用数学运算我们可以使用数学运算来实现数字反转。具体来说,我们可以将数字除以10 的幂(如10^1、10^2 等),取余数作为个位数,然后将商的个位数乘以10^n,取余数作为十位数。

def reverse_num_math(n):
 # 将数字转换为字符串 str_n = str(n)
 # 反转数字 reversed_str_n = ''
 for i in range(len(str_n) -1, -1, -1):
 reversed_str_n += str_n[i]
 # 将得到的字符串转换回整数 reversed_n = int(reversed_str_n)
 return reversed_n# 测试print(reverse_num_math(123)) # 输出:321


### 方法三:使用循环我们可以使用循环来实现数字反转。具体来说,我们可以将数字除以10 的幂(如10^1、10^2 等),取余数作为个位数,然后将商的个位数乘以10^n,取余数作为十位数。

def reverse_num_loop(n):
 # 反转数字 reversed_n =0 while n >0:
 # 取余数作为个位数 digit = n %10 # 将余数乘以10^n,取余数作为十位数 reversed_n = reversed_n *10 + digit # 将商除以10^1 n //=10 return reversed_n# 测试print(reverse_num_loop(123)) # 输出:321


**总结**

数字反转是计算机科学中一个基本的概念。我们可以使用字符串、数学运算或循环来实现数字反转。每种方法都有其优缺点,选择哪种方法取决于具体需求和性能要求。

**参考资料**

* 《算法导论》第2 版* 《计算机科学概论》第3 版

相关标签:算法数据结构
其他信息

其他资源

Top