我正在尝试找到一种方法来反转数字而无需

  • 将其转换为字符串以找到长度
  • 反转字符串并将其解析回
  • 运行单独的循环以计算长度

  • 我目前正在以这种方式
     public static int getReverse(int num){
            int revnum =0;
            for( int i = Integer.toString(num).length() - 1 ; num>0 ; i-- ){
                revnum += num % 10 * Math.pow( 10 , i );
                num /= 10;
            }
            return revnum;
        }
    

    但是我想实现以上三个条件。

    我正在寻找一种方法,可能使用按位移位运算符或其他某种按位运算。

    可能吗 ?如果可以,怎么办?

    PS:如果输入1234,则应返回4321。我只会反转整数和多头

    最佳答案

    怎么样:

    int revnum = 0;
    while (num != 0) {
      revnum = revnum * 10 + (num % 10);
      num /= 10;
    }
    return revnum;
    

    该代码需要一个非负输入。

    这可能对您无关紧要,但值得注意的是,getReverse(getReverse(x))不一定等于x,因为它不会保留尾随零。

    08-15 22:14