题目

  • 题目描述
  • 输入一个整数,将这个整数以字符串的形式逆序输出
  • 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
  • 输入描述:
    输入一个int整数
  • 输出描述:
    将这个整数以字符串的形式逆序输出
  • 示例1
    输入
    1516000
  • 输出
    0006151

代码

三种解法:

package org.lht.boot.lang.suanfa;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
* @author haitao.li
* @description: 题目描述
* 输入一个整数,将这个整数以字符串的形式逆序输出
* 程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
* <p>
* <p>
* 输入描述:
* 输入一个int整数
* <p>
* 输出描述:
* 将这个整数以字符串的形式逆序输出
* <p>
* 示例1
* 输入
* <p>
* 1516000
* <p>
* 输出
* <p>
* 0006151
* @date 2021/4/13 14:03
*/
public class Huawei数字颠倒 {

/**
* 最直接暴力,并且性能速度还不错的方法
*/
// public static void main(String[] args) throws IOException {
// BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
// String str=reader.readLine();
//
// for (int i=str.length()-1;i>=0;i--){
// System.out.print(str.charAt(i));
// }
//
// }


// /**
// * 牛客网最优解,前后交换字符的方式进行逆向
// * @param args
// * @throws Exception
// */
// public static void main(String[] args) throws Exception {
//
// InputStream stream = System.in;
// int l;
// byte[] bytes = new byte[1024];
// while ((l = stream.read(bytes)) > 0){
// String num = new String(bytes,0,l-1);
// byte[] numByte = num.getBytes();
// for (int i = 0;i<numByte.length /2;i++){
// byte temp = numByte[i];
// numByte[i] = numByte[numByte.length - i -1];
// numByte[numByte.length - i -1] = temp;
// }
// System.out.println(new String(numByte,0,l-1));
// }
// }


/**
* 牛客网方式,改变输入方式,速度和其他差不多
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str = reader.readLine();

byte[] numByte = str.getBytes();
for (int i = 0; i < numByte.length / 2; i++) {
byte temp = numByte[i];
numByte[i] = numByte[numByte.length - i - 1];
numByte[numByte.length - i - 1] = temp;
}
System.out.println(new String(numByte, 0, str.length()));

}
}

笔试算法《数字颠倒》_字符串