leetcode:Reverse Words in a String

来源:互联网 发布:mac的复制黏贴快捷键 编辑:程序博客网 时间:2024/06/04 19:04


翻转单词,解析出字符串里面的每一个单词,然后将其逆序输出。所以本题的关键是怎么解析出每一串的单词

定义两个字针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){            }}


0 0
原创粉丝点击