翻转单词,解析出字符串里面的每一个单词,然后将其逆序输出。所以本题的关键是怎么解析出每一串的单词
定义两个字针i,j,i字针总是指向单词的开头(过滤掉空格字符),j字针指向字针i开头的之后字符串中的第一个空格符,那么i-j间的就是一个单词,但是遍历到最后
需要注意j不能超过字符串的长度,遍历结束之后还是要再判断一次有没有漏掉最后一个单词
public class Solution {
public String reverseWords(String s) {
char[] str = s.toCharArray();
List<String> list = new ArrayList<>();
int i = 0,j = 0;
while(i < str.length && str[i] == ' ') i++;
for( j = i + 1; j < str.length; ){
while(j < str.length && str[j] != ' ')j++;
list.add(new String(str, i ,j - i));
i = j;
while(i < str.length && str[i] == ' ') i++;
j = i + 1;
}
if(i < str.length && j >= str.length){
list.add(new String(str, i, j - i));
}
StringBuilder sb = new StringBuilder();
for(i = list.size() - 1; i >= 1; --i){
sb.append(list.get(i));
sb.append(' ');
}
if(list.size() != 0)
sb.append(list.get(0));
return sb.toString();
}
void reverse(List list){
}
}