剑指 Offer.58-I.翻转单词顺序
剑指 Offer.58-I.翻转单词顺序
题目链接
<剑指 Offer 58 - I. 翻转单词顺序 - 力扣(LeetCode) (leetcode-cn.com)>
问题描述
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串”I am a student. “,则输出”student. a am I”
个人想法
反向遍历目标字符串,当遇到空格时,向结果字符串中写入
时间复杂度:$O(N)$
空间复杂度:$ O(N)$ 由于Java中的字符串是不可变对象,故无法避免$O(N)$的时间开销
官方解法
首先去除首尾的空格,倒序遍历字符串,当确定单词边界后,使用s.substring()
函数将字符串切割,后直接添加入结果串中,在返回前,需要通过s.trim()
函数去除首尾的空格
时间复杂度:$O(N)$
空间复杂度:$ O(N)$
代码实现
1 | class Solution { |