入力文字列を考えると、言葉によって、文字列の単語を逆に。
例1:
入力:「空が青い」
出力:「青空で」
例2:
入力: "!Hello World"の
出力:「世界!hello」を
説明:あなたの逆の文字列は、先頭または末尾にスペースを含めることはできません。
例3:
入力:「良い例」
出力:「例の良い」
説明:あなたが逆の文字列内の1つのスペースに二つの単語の間に複数のスペースを削減する必要があります。
注意:
単語は、非空白文字のシーケンスとして定義されます。
入力文字列は、先頭または末尾にスペースが含まれていてもよいです。しかし、あなたの逆の文字列は、先頭または末尾にスペースを含めることはできません。
あなたは逆の文字列内の1つのスペースに二つの単語の間に複数のスペースを削減する必要があります。
不是很清楚为什么golang的strings.Split()函数会分割出空字符串
func reverseWords(s string) string {
res := []string{}
sReverse := reverseString(s)
words := strings.Split(sReverse, " ")
for _, v := range words {
if v ==""{
continue
}
res = append(res, reverseString(v))
}
return strings.Join(res, " ")
}
func reverseString(s string) string {
runes := []rune(s)
for from, to := 0, len(runes)-1; from < to; from, to = from+1, to-1 {
runes[from], runes[to] = runes[to], runes[from]
}
return string(runes)
}