public class WordsReverse {
public static void main(String[] args) {
String s = " Iadd am a student.";
char[] arr=s.toCharArray();
reverse(arr,0,arr.length-1);
System.out.println(arr);
int from = -1;
for(int i=0;i<arr.length;i++){
if(arr[i] != ' '&&from == -1){
from=i;
}else if(arr[i] == ' '&&from > -1){
reverse(arr, from, i-1);
i--;
from = -1;
}else if(from > -1 && i==arr.length-1){
reverse(arr, from, i);
}
}
System.out.println(arr);
}
private static void reverse(char[] arr,int from,int to){
while(from < to){
char temp=arr[from];
arr[from++]=arr[to];
arr[to--]=temp;
}
}
}
比较简单的一个算法题,首先将整个字符串翻转,然后再将每个单词再次翻转,比如 I am a student. 首次翻转之后是.tneduts a ma I,然后再将各个单词翻转,就变成了student. a am I,注意边界问题就行。