题目主要信息

1、输入一个int整数

2、将整数以字符串的形式逆序输出

方法一:暴力法

具体做法

直接倒叙遍历字符串并存入ArrayList中,在遍历一次,存入到最终结果字符串中。

例如19880

存入ArrayList中,变成->[0, 8, 8, 9, 1]

结果字符串result = "",然后遍历ArrayList进行result+=ArrayList.get(i);

alt

Java代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int num = Integer.parseInt(bf.readLine());
        ArrayList<Character> temp = new ArrayList<>();
        String s = num+"";//转为字符串
        //存入ArrayList,逆序存入
        for(int i=s.length()-1;i>=0;i--){
            temp.add(s.charAt(i));
        }
        s = "";
        for (Character character : temp) {
            s += character;
        }
        System.out.println(s);
    }
}

复杂度分析

  • 时间复杂度:O(n)O(n),需要遍历字符串两次
  • 空间复杂度:O(n)O(n),一个临时的ArrayList。

方法二:使用StringBuilder或者StringBuffer

具体做法

这里可以直接使用Java中的库函数StringBuilder或者StringBuffer,直接对原字符串进行reverse操作即可。

Java代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String s = bf.readLine();
        StringBuilder sb = new StringBuilder(s);
        System.out.println(sb.reverse().toString());
    }
}

复杂度分析

  • 时间复杂度:O(n)O(n),大家可以去阅读源码,发现也是遍历了一次。
  • 空间复杂度:O(1)O(1),临时变量StringBuilder。