题目主要信息
1、将一个字符串str内容颠倒并输出
2、输入的字符串可以有空格。
这题相对是比较简单的,直接看方法吧。
方法一:暴力法
具体做法
直接倒叙遍历字符串并存入ArrayList中,在遍历一次,存入到最终结果字符串中。
例如I am a student
存入ArrayList中,变成->[t, n, e, d, u, t, s, , a, , m, a, , I]
结果字符串result = "",然后遍历ArrayList进行result+=ArrayList.get(i);
举例:19880,操作如下。
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();
//第一次遍历字符串 存入temp中
ArrayList<Character> temp = new ArrayList<>();
for (int i=s.length()-1;i>=0;i--){
temp.add(s.charAt(i));
}
String result = "";//最终的结果
for (Character character : temp) {
result += character;
}
System.out.println(result);
}
}
复杂度分析
- 时间复杂度:,需要遍历字符串两次
- 空间复杂度:,一个临时的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。