java中怎么让一个数倒转_java – 如何反转整数的数字?

好的,这是IntStream的一个有趣的实现:

public static int reverse (int n) {

return IntStream.iterate (n, i -> i/10) // produces a infinite IntStream of n, n/10,

// n/100, ...

.limit(10) // 10 elements are sufficient, since int has <= 10 digits

.filter (i -> i > 0) // remove any trailing 0 elements

.map(i -> i % 10) // produce an IntStream of the digits in reversed

// order

.reduce (0, (r,i) -> r*10 + i); // reduce the reversed digits back

// to an int

}

例如,对于输入123456789,它将首先生成无限IntStream:

123456789,12345678,1234567,123456,12345,1234,123,12,1,0,0,...

限制为10个元素并删除0后,我们留下:

123456789,12345678,1234567,123456,12345,1234,123,12,1

将每个元素映射到最后一个数字后,我们得到:

9,8,7,6,5,4,3,2,1

现在我们只需要以类似于您在问题中所做的方式减少IntStream – 将每个元素添加到中间结果乘以10:

((((0 * 10 + 9) * 10 + 8) * 10 + 7) * 10 ....) * 10 + 1

请注意,如果输入的数字有10位数字,则最后一位数字> 1,反转结果会溢出.

它也不支持负面输入.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值