图解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^)/ ~ 「干货分享,每天更新」

相关文章
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
63 6
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 26. 树的子结构
这篇文章提供了解决LeetCode上"剑指Offer 26. 树的子结构"问题的Python代码实现和解析,判断一棵树B是否是另一棵树A的子结构。
57 4
|
2月前
【LeetCode】整数翻转
【LeetCode】整数翻转
20 1
|
2月前
Leetcode(最后一个单词长度)
这篇文章介绍了两种解决LeetCode第58题的方法,即计算给定字符串中最后一个单词的长度,方法包括翻转字符串和逆向遍历统计。
22 0
|
2月前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
24 0
|
4月前
|
算法
LeetCode第58题最后一个单词的长度
LeetCode第58题"最后一个单词的长度"的解题方法,通过从字符串末尾向前遍历并计数非空格字符,直接得出最后一个单词的长度。
LeetCode第58题最后一个单词的长度
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点
Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。
58 5
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 30. 包含min函数的栈
本文提供了实现一个包含min函数的栈的Python代码,确保min、push和pop操作的时间复杂度为O(1)。
35 4
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
Leetcode题目"剑指 Offer 21. 调整数组顺序使奇数位于偶数前面"的两种Python解决方案,一种是使用双端队列调整数组顺序,另一种是使用双指针法将奇数移到数组前半部分,偶数移到后半部分。
29 4
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 18. 删除链表的节点
Leetcode题目"剑指 Offer 18. 删除链表的节点"的Python解决方案,通过使用双指针法找到并删除链表中值为特定数值的节点,然后返回更新后的链表头节点。
46 4