思路
- 先对每一个单词实现翻转,再对整个数组实现翻转。
- 这样单词实现了两次翻转,所以单词个体的顺序仍不变,但单词间的顺序发生了变化。
class Solution { public void reverseWords(char[] s) { if(s.length==0) return; int index = 0; //先挨个单词进行反转 for(int i=0;i<=s.length;i++){ if(i==s.length||s[i]==' '){ //注意这里i==s.length对最后一个单词的边界条件判断 reverse(s,index,i); index =i+1; } } reverse(s,0,s.length); } //辅助的反转方法 public void reverse(char[] str,int start,int end){ int count = 0; for(int i =start;i<(end+start)/2;i++){ char t = str[i]; str[i]=str[end-1-count]; str[end-1-count]=t; count++; } }}