在不使用数组或字符串的情况下交换整数中的数字对

时间:2013-02-18 05:28:19

标签: java algorithm

尝试弄清楚如何在数字被拉开后重建数字...使用模数运算符来交换数字对。例如,方法调用swapDigitPairs(482596)将返回845269.它需要在不使用数组或字符串的情况下完成。如果方法传递了一个奇数位数的整数,则最左边不会移动。

编辑: 交换9和6,交换2和5,以及4和8。 我理解如何将数字分开,但我正在寻找一些如何将它们放在一起而没有字符串或数组的想法。任何想法赞赏

2 个答案:

答案 0 :(得分:1)

这是 scratch pseudo -code - 希望有帮助

{
    int i = 0x842569;

    Do for each byte
    {
          for byte0
          {

               int  byte0Swapped = swapNibble (i & 0xFF);

                i = (i & 0xFFFFFF00) | byte0Swapped ;
          }
    }
}

答案 1 :(得分:0)

Haskell中:

swap num = 
  swap' num 1
    where swap' num factor =
            let a = mod num 10
                b = mod (div num 10) 10
            in next + factor * (10 * a + b)
                where next = if num == 0 
                                then 0
                                else swap' (div num 100) (100 * factor)

*主>交换482596
845269