题目
思路
- 逆序遍历,初始化i,j
- i寻找第一个空格,拆分[i+1,j+1]并拼接
- 跳过中间空格
- j=i
循环(i>=0)
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String s=scanner.nextLine();
System.out.println(reverse(s));
}
public static String reverse(String s){
String rs=s.trim();
int i=rs.length()-1;
int j=i;
StringBuilder bs=new StringBuilder();
while (i>=0){
//找第一个空格
while (i>=0&&rs.charAt(i)!=' '){
i--;
}
bs.append(rs.substring(i+1,j+1)+" ");
//跳过所有空格
while (i>=0&&rs.charAt(i)==' '){
i--;
}
j=i;
}
return bs.toString();
}
}
复杂度
时间复杂度O(n)
空间复杂度O(1)