题目主要信息
1、输入一个int整数
2、将整数以字符串的形式逆序输出
方法一:暴力法
具体做法
直接倒叙遍历字符串并存入ArrayList中,在遍历一次,存入到最终结果字符串中。
例如19880
存入ArrayList中,变成->[0, 8, 8, 9, 1]
结果字符串result = "",然后遍历ArrayList进行result+=ArrayList.get(i);
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);
}
}
复杂度分析
- 时间复杂度:,需要遍历字符串两次
- 空间复杂度:,一个临时的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());
}
}
复杂度分析
- 时间复杂度:,大家可以去阅读源码,发现也是遍历了一次。
- 空间复杂度:,临时变量StringBuilder。