前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >剑指Offer(四十四)-- 翻转单词序列

剑指Offer(四十四)-- 翻转单词序列

作者头像
秦怀杂货店
发布2022-02-15 13:59:58
2340
发布2022-02-15 13:59:58
举报
文章被收录于专栏:技术杂货店技术杂货店

Github仓库地址:https://github.com/Damaer/CodeSolution 文档地址:https://damaer.github.io/CodeSolution/

题目描述

给定一个句子,将句子中的单词进行翻转,注意,单词内部的字符顺序不改变,改变的是单词与单词之间的顺序,比如“I am a coder.”,翻转之后变成“coder. a am I”。

示例注意:引号内部才是输入的内容

输入

"You are a cool boy."

输出

"boy. cool a are You"

思路以及解答

第一种方法,Java里面有切割字符串的方法,直接用空格进行分隔,分隔成为多个单词,然后从字符串数组的后面开始,每一个字符拼接上一个空格,但是,值得注意的一点是,当只剩下一个字符串的时候,也就是索引为0的时候,不需要再拼接空格。代码实现如下:

代码语言:javascript
复制
public class Solution {
    public String ReverseSentence(String str) {
        if(str!=null&&str.length()!=0&&!str.equals("   ")){
            String[] strs = str.split(" ");
            StringBuilder stringBuilder = new StringBuilder();
            for(int i=strs.length-1;i>=0;i--){
                stringBuilder.append(strs[i]);
                stringBuilder.append(i==0?"":" ");
            }
            return stringBuilder.toString();
        }
        return str;
    }
}

第二种方式,是借助堆栈,堆栈是先进后出,也就是我们切割完字符串之后,全部放到堆栈中,再全部取出来拼接,就可以完成逆序的操作。有一个值得注意的点,就是空格的问题,我们压栈的时候,跟随着拼接上空格即可,最后一个字符不压入空格。

代码语言:javascript
复制
    public String ReverseSentence(String str) {
        if (str == null || str.length() == 0)
            return str;
        StringBuilder stringBuilder = new StringBuilder();
        String[] strs = str.split(" ");
        if (strs.length == 0)
            return str;
        Stack<String> stack = new Stack<>();
        for (int i = 0; i < strs.length - 1; i++) {
            stack.push(strs[i]);
            stack.push(" ");
        }
        stack.push(strs[strs.length - 1]);
        while (!stack.isEmpty()) {
            stringBuilder.append(stack.pop());
        }
        return stringBuilder.toString();
    }

【作者简介】: 秦怀,公众号【秦怀杂货店】作者,技术之路不在一时,山高水长,纵使缓慢,驰而不息。这个世界希望一切都很快,更快,但是我希望自己能走好每一步,写好每一篇文章,期待和你们一起交流。

- END -

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秦怀杂货店 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 思路以及解答
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档