当前位置:  首页>> 技术小册>> 数据结构与算法(中)

题目描述

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。

为简单起见,标点符号和普通字母一样处理。

例如输入字符串 "I am a student.",则输出 "student. a am I"

样例

  1. 输入:"I am a student."
  2. 输出:"student. a am I"

解法

先对字符串按空格切割成数组,再逆序数组后,最后将元素拼接并返回。

  1. /**
  2. * @author bingo
  3. * @since 2018/12/12
  4. */
  5. class Solution {
  6. /**
  7. * 翻转单词
  8. *
  9. * @param s 字符串
  10. * @return 翻转后的字符串
  11. */
  12. public String reverseWords(String s) {
  13. if (s == null || s.length() == 0 || s.trim().equals("")) {
  14. return s;
  15. }
  16. String[] arr = s.split(" ");
  17. int p = 0, q = arr.length - 1;
  18. while (p < q) {
  19. swap(arr, p++, q--);
  20. }
  21. return String.join(" ", arr);
  22. }
  23. private void swap(String[] arr, int p, int q) {
  24. String t = arr[p];
  25. arr[p] = arr[q];
  26. arr[q] = t;
  27. }
  28. }

测试用例

  1. 功能测试(句子中有多个单词;句子中只有一个单词);
  2. 特殊输入测试(字符串指针为空指针;字符串的内容为空;字符串中只有空格)。

该分类下的相关小册推荐: