Skip to content

Latest commit

 

History

History

0557.reverse-words-in-a-string-iii

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

题目描述

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:

输入: "Let's take LeetCode contest"
输出: "s'teL ekat edoCteeL tsetnoc" 

注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

解题思路

  1. 遍历字符串遇到空格就停止
  2. 利用双指针 实现字符串的反转
  3. 最后一个字符串是没有空格的,所以当时最后一个word的时候需要特殊处理一下结束的索引位置

具体解法

Golang

func reverseWords(s string) string {
	b := []byte(s)
	l := 0
	for i, v := range s {
		if v == ' ' || i == len(s)-1 {
			r := i - 1
			if i == len(s)-1 {
				r = i
			}
			for l < r {
				b[l], b[r] = b[r], b[l]
				l++
				r--
			}
			l = i + 1
		}
	}
	return string(b)
}