算法积累-反转字符串里的单词

30 阅读1分钟

题目:反转字符串里的单词。

注意:

  • 输入字符串可以在前面或者后面包含多余的空格,但是反转后前后不能包括。
  • 如果两个单词间有多个空格,将反转后单词间的空格减少到只含一个。

解题:

/**
 * 反转字符串里的单词,例如:“ hello   word ” 反转成 "word hello"
 * @param str 原字符串
 * @return 返回反转后的字符串
 * 正则表达式中\s匹配任何空白字符,包括空格、制表符、换页符等等
 * \s+则表示匹配任意多个空白字符
 */
public String reverseWords(String str) {
    String[] array = str.trim().split("\s+");// 删除首尾空格,以'\s+'分割字符串,
    StringBuffer sb = new StringBuffer();
    for (int i = array.length - 1; i >= 0; i--) {// 倒序遍历
        sb.append(array[i]).append(" "); // 将单词拼接
    }
    return sb.toString().trim();// 转化为字符串,删除空格并返回
}