字符串中的单词反转(反转单词序列),剑指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();                 // 转化为字符串,删除尾部空格,并返回
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值