思路
- 先对每一个单词实现翻转,再对整个数组实现翻转。
- 这样单词实现了两次翻转,所以单词个体的顺序仍不变,但单词间的顺序发生了变化。
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++;
}
}
}