leetcode 151 翻转字符串里的单词

妖狐艹你老母 2023-06-27 05:58 98阅读 0赞

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:

输入: “the sky is blue”
输出: “blue is sky the”
示例 2:

输入: “ hello world! “
输出: “world! hello”
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
示例 3:

输入: “a good example”
输出: “example good a”
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

说明:

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

思路: 原先思路就只有 双指针交换,但是现在还有一种库函数

  1. class Solution {
  2. public String reverseWords(String s) {
  3. String[] words = s.trim().split(" +");
  4. Collections.reverse(Arrays.asList(words));
  5. return String.join(" ", words);
  6. }
  7. }

以及稍微快点的思路,省事

  1. class Solution {
  2. public String reverseWords(String s) {
  3. String[] words = s.trim().split(" ");
  4. int k = 0;
  5. for (int i = 0;i < words.length; i++) {
  6. if (!"".equals(words[i])) {
  7. words[k++] = words[i];
  8. }
  9. }
  10. StringBuilder sb = new StringBuilder();
  11. for (int i = k-1;i >= 0;i--) {
  12. sb.append(words[i]); // 逆序
  13. if (i > 0) {
  14. sb.append(" ");
  15. }
  16. }
  17. return sb.toString();
  18. }
  19. }

发表评论

表情:
评论列表 (有 0 条评论,98人围观)

还没有评论,来说两句吧...

相关阅读