在 Java 中,反转数字意味着将第一位与最后一位交换,第二位与倒数第二位交换,依此类推,直到到达中间元素。
反转数字示例:
> 输入: n = 357
> 输出: 753
>
> 输入: n = 100
> 输出: 1 (不考虑前导零)
注意: 反转后的前导零将不会被保留(即反转 100 后会变成 001 ≈ 1)。
Java 中反转数字的算法
要反转一个数字,我们应该执行以下步骤:
- 将数字对 10 取模。
- 将反转后的数字乘以 10,并将模值加到反转后的数字中。
- 将数字除以 10。
- 重复上述步骤,直到数字变为零。
在 Java 中反转数字的方法
我们可以使用以下三种主要方法在 Java 中反转数字:
- 使用 While 循环
- 使用递归
- 使用 StringBuilder 类
1. 使用 While 循环
只需应用上述讨论的步骤/算法,并在数字变为零时终止循环。
示例:
Java
CODEBLOCK_bc331827
Output
Reversed Number is: 6254
#### 上述方法的复杂度:
> 时间复杂度: 对于给定的数字 n,为 O(log10n)
> 辅助空间: O(1)
2. 使用递归
在递归中,最终的反转值将存储在一个全局变量 ‘rev‘ 中。请遵循以下说明。
- 如果数字变为零,则终止递归,这将是基本条件。
- 取模值并将其与 ‘rev*10‘ 的乘积相加。
- 将数字除以 10,并在将其更新为 number/10 后,对其调用反转函数。
示例:
Java
CODEBLOCK_e3479054
Output
Reversed Number is: 6254
#### 上述方法的复杂度:
> 时间复杂度: O(logn),其中 n 是数字
> 辅助空间: O(logn)
3. 使用 StringBuilder 类
在这种方法中,我们将使用 StringBuilder 类来反转数字。我们将使用 StringBuilder 的 reverse() 方法。
示例:
Java
CODEBLOCK_796c56de
Output
654321
上述方法的复杂度:
> 时间复杂度: O(ln)
> 辅助空间: O(n)
请参阅完整文章以获取更多信息 – 编写一个程序来反转数字的数位