📑 题目:151. 翻转字符串里的单词

🚀 本题 LeetCode 传送门

题目大意

给定一个字符串,逐个翻转字符串中的每个单词。

说明:

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

进阶:

  • 请选用 C 语言的用户尝试使用 O(1) 额外空间复杂度的原地解法。

解题思路

  • 给出一个中间有空格分隔的字符串,要求把这个字符串按照单词的维度前后翻转。
  • 依照题意,先把字符串按照空格分隔成每个小单词,然后把单词前后翻转,最后再把每个单词中间添加空格。

代码

  1. package leetcode
  2. import ""strings""
  3. func reverseWords151(s string) string {
  4. ss := strings.Fields(s)
  5. reverse151(&ss, 0, len(ss)-1)
  6. return strings.Join(ss, "" "")
  7. }
  8. func reverse151(m *[]string, i int, j int) {
  9. for i <= j {
  10. (*m)[i], (*m)[j] = (*m)[j], (*m)[i]
  11. i++
  12. j--
  13. }
  14. }