算法之数字反转问题

4.数字反转问题:

对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:
如果 X = 123,则rev(X) = 321;
如果 X = 100,则rev(X) = 1.
现在给出整数x和y,要求rev(rev(x)+ rev(y))为多少? 

代码:(1)方法一;定义一个ArrayList,然后把反转之后的各个数add进入list里面。

public class reverse {

      publicstatic void main(String []args)

      {     Scanner scanner=new Scanner(System.in);

           intone=scanner.nextInt();

           inttwo=scanner.nextInt();

           System.out.println(Reverse(one));

           System.out.println(Reverse(two));

           //intb=Reverse(Reverse(one)+Reverse(two));

           intb=Reverse(one)+Reverse(two);

           intc=Reverse(b);

           System.out.println(b);

           System.out.println(c);   

      }

      publicstatic int Reverse(int x ){

           intresult=0;

           ArrayList<Integer>a=new ArrayList<>();

           //把数单个蹦以下,写在数组中

           while(x>0)

           {//取个位数,每次只是加入

                 a.add(x%10);

           //取剩余的几位数,先加个位,在加10位,在加。。。

                 x=x/10;

           }

           //此处是要把每一个数,进行组合起来了

           for(inti=0;i<a.size();i++){

                 result=(int)(result+a.get(i)*Math.pow(10,a.size()-i-1));//pow函数是变为10的多少次方

           }

           returnresult;

      }

}

解法2:直接使用数的规律进行;

public classreverse {

 

   public static int resource(int x){

        long z = x;

        long sum = 0;

        while(z!=0){

            sum = sum*10+z%10;            //重点还是搁这里。。。

            z = z/10;

        }

        return (int)sum;

   }

   public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        while(sc.hasNext()){

            System.out.println(resource(resource(sc.nextInt())+resource(sc.nextInt())));

        }

   }

}

一堆数字,需要将数字转化为String类型时候=====将字符串类型转化为字符数组

 Stringfirst = String.valueOf(firsti);

String second = String.valueOf(secondi);    

 char[]firstC = first.toCharArray();

 char[]secondC = second.toCharArray();

附加的练习一下:

public static void main(String[] args) {

        int i=132;

        String s=String.valueOf(i);

        char []a=s.toCharArray();

        for(int j=0;j<a.length;j++){

            System.out.print(a[j]);

        }

    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值