牛客网在线编程:数字翻转

题目:

对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如:
如果 X = 123,则rev(X) = 321;
如果 X = 100,则rev(X) = 1.
现在给出整数x和y,要求rev(rev(x) + rev(y))为多少?
输入描述:
输入为一行,x、y(1 ≤ x、y ≤ 1000),以空格隔开。
输出描述:
输出rev(rev(x) + rev(y))的值
示例1
输入

123 100
输出

223

思路:

将int转换为string,使用栈存储,入栈出栈操作即可完成翻转操作。最终返回将string转化为int。
在去除数字末尾的0时进行了除10取余判断是否等于0的操作,比较麻烦,网上有简单思路。
数字翻转的公式是
nt t = 0;
while(m>0)
{
t=t*10+m%10;
m=m/10;
}这样直接去除了转换后数字开头的0
简单操作为:

 1 int rev(int m)
 2 {
 3     int t=0;
 4     while(m>0)
 5     {
 6         t=t*10+m%10;
 7         m=m/10;
 8     }
 9     return t;
10 }
import java.util.*;
public class Shuzifanzhuan {
    public static int rev(int x){
        while(x%10==0){x/=10;}
        String s = Integer.toString(x);
        Stack<Character> stack = new Stack<Character>();
        for(int i = 0; i <s.length();i++){
            stack.push(s.charAt(i));
        }
        String result="";
        while(!stack.isEmpty()){
            result += stack.pop();
        }
        //System.out.println(result);
        int re = Integer.valueOf(result);
        return re;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int y = sc.nextInt();
        System.out.println(rev(rev(x)+rev(y)));
        
    }

}
原文地址:https://www.cnblogs.com/zlz099/p/8515421.html