Open yankewei opened 4 years ago
我们可以从字符串尾部向前遍历字符串,把每个字符写入数组,如果遇到空格,则转换数组,拼接字符串,最后返回拼接的字符串就可以。
func reverseWords(s string) string {
var ret string
var byteArr []byte
for i := len(s) - 1; i >= 0; i-- {
if s[i] != 32 {
byteArr = append(byteArr, s[i])
} else {
ret = " " + string(byteArr) + ret
byteArr = []byte{}
}
}
return string(byteArr) + ret
}
func reverseWords(s string) string {
sArr := strings.Split(s, " ")
for i, v := range sArr {
sArr[i] = reverse([]byte(v), 0, len(v)-1)
}
return strings.Join(sArr, " ")
}
func reverse(s []byte, start, end int) string {
for start < end {
s[end], s[start] = s[start], s[end]
start++
end--
}
return string(s)
}
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例:
提示:
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii