题目信息
-
题目:翻转单词顺序
-
时间: 2020-08-12
-
题目链接:Leetcode
-
tag:字符串 排序
-
难易程度:简单
-
题目描述:
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。
示例1:
1 | 输入: "the sky is blue" |
示例2:
1 | 输入: " hello world! " |
注意
1 | 1. 无空格字符构成一个单词。 |
解题思路
本题难点
处理空格情况,字符串倒序。
具体思路
- 倒序遍历字符串 s,记录单词左右索引边界 i, j;
- 每确定一个单词的边界,则将其添加至单词列表 res ;
- 最终,将单词列表拼接为字符串,并返回即可。
代码
1 | class Solution { |
复杂度分析:
- 时间复杂度 O(N) : 其中 N为字符串 s的长度,线性遍历字符串。
- 空间复杂度 O(N) : 新建的 tringBuilder(Java) 中的字符串总长度 ≤N ,占用 O(N) 大小的额外空间。
其他优秀解答
解题思路
利用 “字符串分割”、“列表倒序” 的内置函数 (面试时不建议使用) ,可简便地实现本题的字符串翻转要求。
代码
1 | class Solution { |