题目链接
英文链接:https://leetcode.com/problems/reverse-words-in-a-string/
中文链接:https://leetcode-cn.com/problems/reverse-words-in-a-string/
题目详述
给定一个字符串,逐个翻转字符串中的每个单词。
示例:
1 | 输入: "the sky is blue", |
说明:
- 无空格字符构成一个单词。
- 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
- 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
进阶: 请选用C语言的用户尝试使用 O(1) 空间复杂度的原地解法。
题目详解
这题的难点在于可能连续存在多个空格,着重点在于处理空格。如果不存在多余的空格,可以采取“整体反转 + 局部反转”的方式来完成单词的反转。
方法一:
- 每次调用 replaceAll 方法将连续两个空格转换成一个空格,最终字符串中不存在连续两个空格。
- 然后调用 split 方法进行分割。
- 最后从后往前拼成一个字符串。
1 | public class LeetCode_00151 { |
方法二:
- 从后往前遍历字符串,自己分割出一个个单词。
- 把单词拼接成字符串,注意处理最后的空格。
1 | public class LeetCode_00151 { |