【发布时间】:2013-03-12 06:52:36
【问题描述】:
我正在寻找一种有效的算法来反转一个数字,例如
输入: 3456789
输出: 9876543
在 C++ 中,有很多带有移位和位掩码的选项,但最有效的方法是什么?
我的平台:x86_64
数字范围:XXX - XXXXXXXXXX(3 - 9 位)
编辑 我输入的最后一位永远不会是零,因此不存在前导零问题。
【问题讨论】:
-
如果您不将其视为数字,为什么不将其视为字符串?反转它是微不足道的。
-
@hvd 这会导致调用字符串构造函数、赋值运算符、析构函数......我不确定这是否是最有效的方法。
-
您想要前导零吗?对于前导零的情况,提供的两个答案都失败。
-
你真的需要“最高效的方式”吗?这真的是所有处理时间都花在程序中的地方吗?对我来说,这听起来像是过早的优化。
-
移位和位掩码?不是以 10 为基数。如果你想在 16 基数中执行此操作,我会有一些不错的技巧,但二进制计算机就是不喜欢以 10 为基数。
标签: c++ performance algorithm optimization