图解LeetCode——剑指 Offer 58 - I. 翻转单词顺序

简介: 图解LeetCode——剑指 Offer 58 - I. 翻转单词顺序

一、题目

输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。

二、示例

2.1> 示例 1:

【输入】 "the sky is blue"

【输出】 "blue is sky the"

2.2> 示例 2:

【输入】 "  hello world!  "

【输出】 "world! hello"

【解释】 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

说明:

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

三、解题思路

  • 根据题目描述,我们需要将原有字符串中单词顺序翻转输出。那么本题可以借助trim()和split()这两个函数对字符串进行清洗和拆分操作。那么本题题解中容易出错的点就是会有多个空格的出现,比如:“the sky     is   blue”,那么这种情况,我们通过调用split()方法之后,其实会产生多个空字符串“”,那么我们在拼装最终翻转字符串的时候,将字符串“”过滤掉不进行拼装即可。
  • 那么在拼装中,如果我们采用String类型和+符号进行结果拼装的话,那么题解耗时将会很长。我们可以采用创建StringBuilder对象,然后调用append([单词] + “ ”)方法执行最终字符串结果的拼装,而由于append函数的拼装方式是尾部拼装,所以,我们在遍历原字符串的时候,就需要从尾部开始遍历。
  • 最后,由于我们是通过调用append([单词] + “ ”)方法进行的结果拼装,还需要再调用StringBuilder的toString()方法将StringBuilder实例对象转换为String类型的对象,并且再次调用trim()方法将末尾的这个空格“ ”去除掉即可。
  • 下面我们还是举例说明一下。例如,我们输入字符串“the key is blue”,那么具体的处理逻辑请见下图所示:

四、代码实现

classSolution {
publicStringreverseWords(Strings) {
StringBuilderresult=newStringBuilder();
String[] st=s.trim().split(" ");
for (inti=st.length-1; i>=0; i--) {
if (st[i].equals("")) continue;
result.append(st[i] +" ");
        }
returnresult.toString().trim();
    }
}


今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

相关文章
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
54 6
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 26. 树的子结构
这篇文章提供了解决LeetCode上"剑指Offer 26. 树的子结构"问题的Python代码实现和解析,判断一棵树B是否是另一棵树A的子结构。
47 4
|
1月前
【LeetCode】整数翻转
【LeetCode】整数翻转
14 1
|
30天前
Leetcode(最后一个单词长度)
这篇文章介绍了两种解决LeetCode第58题的方法,即计算给定字符串中最后一个单词的长度,方法包括翻转字符串和逆向遍历统计。
17 0
|
30天前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
17 0
|
3月前
|
算法
LeetCode第58题最后一个单词的长度
LeetCode第58题"最后一个单词的长度"的解题方法,通过从字符串末尾向前遍历并计数非空格字符,直接得出最后一个单词的长度。
LeetCode第58题最后一个单词的长度
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 30. 包含min函数的栈
本文提供了实现一个包含min函数的栈的Python代码,确保min、push和pop操作的时间复杂度为O(1)。
25 4
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点
Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。
51 5
|
3月前
|
算法 Python
【Leetcode刷题Python】剑指 Offer 33. 二叉搜索树的后序遍历序列
本文提供了一种Python算法,用以判断给定整数数组是否为某二叉搜索树的后序遍历结果,通过识别根节点并递归验证左右子树的值是否满足二叉搜索树的性质。
22 3
|
3月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - II. 从上到下打印二叉树 II
本文提供了一种Python实现方法,用于层次遍历二叉树并按层打印结果,每层节点按从左到右的顺序排列,每层打印到一行。
36 3