题目:
对于一个整数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))); } }