admin管理员组

文章数量:1516870

字符串中的单词反转(反转单词序列),剑指offer,力扣

目录

我们直接看题解吧:

解题方法:

审题目+事例+提示:

思路(双指针):

代码实现:


题目地址:

LCR 181. 字符串中的单词反转 - 力扣(LeetCode)

今天刷字符串中的单词反转(反转单词序列),大家有兴趣可以点上看看题目要求,试着做一下

我们直接看题解吧:

解题方法:

第一个方法双指针,

第二个方法分割+倒序。

审题目+事例+提示:

·message可能前后有空格,或者单词之间存在多个空格,

但返回数组只能单词之间只有一个空格

·未说不可原地更改数组

思路(双指针):

  1. 倒序遍历数组,创建双指针,i、j均指向数组尾部,创建StringBuilder
  2. 每确定一个单词左右边界,就添加到res中
  3. 拼接字符列表,返回字符串 。

代码实现:

class Solution {public String reverseMessage(String message) {//使用trim()方法删去首尾格message = message.trim();   //两个指针均指向数组尾部                            int j = message.length() - 1, i = j;//创建新字符串StringBuilder()StringBuilder res = new StringBuilder();while (i >= 0) {// 搜索空格,并逐个空格跳过while (i >= 0 && message.charAt(i) != ' ') i--;    // 利用subStirng()截取对应单词,利用append()方法添加单词res.append(message.substring(i + 1, j + 1) + " ");  while (i >= 0 && message.charAt(i) == ' ') i--;     // 跳过单词间空格j = i;                                             // j 指向下个单词的尾字符}return res.toString().trim();                    // 转化为字符串,去调首尾空格并返回}
}

代码(方法2):

class Solution {public String reverseMessage(String message) {String[] strs = message.trim().split(" ");    // 删除首尾空格,分割字符串StringBuilder res = new StringBuilder();for (int i = strs.length - 1; i >= 0; i--) {  // 倒序遍历单词列表if(strs[i].equals("")) continue;          // 遇到空单词则跳过res.append(strs[i] + " ");                // 将单词拼接至 StringBuilder}return res.toString().trim();                 // 转化为字符串,删除尾部空格,并返回}
}

本文标签: 字符串中的单词反转(反转单词序列),剑指offer力扣