美文网首页
53.Reverse Words in a String

53.Reverse Words in a String

作者: 博瑜 | 来源:发表于2017-07-16 19:15 被阅读0次
public class Solution {
/**
 * @param s : A string
 * @return : A string
 */
public String reverseWords(String s) {
    // write your code
    if (s == null) return s;
    if (s.length() == 0) return s;
    ArrayList<String> list = generateWord(s);
    reverseWordList(list);
    return generateResult(list);
}

private String generateResult(ArrayList<String> list) {
    int length = list.size();
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i< length; i++) {
        sb.append(list.get(i));
        if (i != length - 1) sb.append(" ");
    }
    return sb.toString();
}
private void swap(ArrayList<String> list,int start, int end) {
    String tmp = list.get(start);
    list.set(start, list.get(end));
    list.set(end, tmp);
}
private void reverseWordList(ArrayList<String> list) {
    int length = list.size();
    int start = 0;
    int end = length - 1;
    while (start < end) {
        swap(list, start, end);
        start++;
        end--;
    }
}

private ArrayList<String> generateWord(String s) {
    int length = s.length();
    ArrayList<String> rst = new ArrayList<>();
    for (int i = 0; i < length; i++) {
        if (s.charAt(i) == ' ') continue;
        int start = i;
        while (i < length && s.charAt(i) != ' ') {
            i++;
        }
        String word = s.substring(start, i);
        rst.add(word);
    }
    return rst;
}
}

相关文章

网友评论

      本文标题:53.Reverse Words in a String

      本文链接:https://www.haomeiwen.com/subject/kahxkxtx.html