问题描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2) 。
输入格式
输入共 1 行,一个整数 N。
输出格式
输出共 1 行,一个整数,表示反转后的新数。
样例输入
123
输出样例
321
样例输入
-380
样例输出
-83
数据规模和约定
-1,000,000,000 ≤ N≤1,000,000,000。
这题方法比较多,反向输出、字符数组、反转函数等等。(加判断)
需要注意的是数据规模有多种情况:
第一种:带负号末尾有0、多个0、没有0.
第二种:无负号末尾有0、多个0、没有0.
第三种:无负号末尾没有0.
public class AL_665 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String a=sc.next();
StringBuffer s=new StringBuffer(a);//创建对象
StringBuffer y=s.reverse();//反转函数
String z=y+"";//转为字符串
//第一种
if (z.charAt(z.length()-1)=='-'){
System.out.print("-");
int sum=0,c=0;
while (z.charAt(c)=='0'){//针对输入多0的情况
sum++;
c++;
}
//直接输出0后面的内容
for (int j = sum; j <z.length()-1; j++) {
System.out.print(z.charAt(j));
}
//第二种(同理)
}else if (z.charAt(0)=='0'){
int sum=0,i=0;
while (z.charAt(i)=='0'){
sum++;
i++;
}
for (int j = sum; j <z.length() ; j++) {
System.out.print(z.charAt(j));
}
//第三种
} else {
System.out.print(z);//反转输出即可
}
}
}