华为机试练习题:HJ11 数字颠倒
1、完整题目
HJ11 数字颠倒
描述
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
数据范围: 0≤n≤2^30−1
输入描述:输入一个int整数
输出描述:将这个整数以字符串的形式逆序输出
示例1
输入:1516000
输出:0006151
示例2
输入:0
输出:0
2、Java 代码
(1)思路:将数值从低位开始一一放入字符串中,最后打印出来(当输入为0时,需要另外考虑)。
(2)此处涉及 StringBuilder 的使用:
- String 一旦赋值或实例化后就不可更改,如果赋予新值将会重新开辟内存地址进行存储。
- 而 StringBuffer 和 StringBuilder 类使用 append 和 insert 等方法改变字符串值时只是在原有对象存储的内存地址上进行连续操作,减少了资源的开销。因此:当需要进行频繁修改字符串的操作时先建立 StringBuffer 或 StringBuilder 类对象进行操作,将最后结果转化成 String 类对象返回,这样效率会高很多。
- StringBuffer 是线程安全的,而 StringBuilder 不考虑线程安全问题,比 StringBuffer 运行效率更高。因此,在单线程的情况下,StringBuilder 是最优选择。
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextInt()) { // 注意 while 处理多个 caseint a = in.nextInt();if (a == 0) {System.out.println(0);} else {StringBuilder sb = new StringBuilder();while (a != 0) {sb.append(a % 10);a = a / 10;}System.out.println(sb);}}}
}