记录下遇到的第一个非空格字符,和第一个空格字符,它们之间就是单词
func reverseWords(s string) string {
s = strings.Trim(s, " ")
idx := 0
str := ""
for idx < len(s) {
// 找到第一个非空格字符
for idx < len(s) && s[idx] == ' ' {
idx++
}
start := idx
// 找到第一个空格字符
for idx < len(s) && s[idx] != ' ' {
idx++
}
end := idx
// 如果大小不相等,说明中间有单词,加入 str 结果
if start != end {
str = s[start:end] + " " + str
}
}
return strings.Trim(str, " ")
}
strings.Fields(s)
:将字符串 s 按一个或多个空格拆分字符串
strings.Join(str, " ")
:将字符切片 str 内元素以 " "
为分隔符进行连接
func reverseWords(s string) string {
// 将 s 按空格拆分成单词数组
str := strings.Fields(s)
// 转置单词位置
for i := 0; i < len(str)/2; i++ {
str[i], str[len(str)-i-1] = str[len(str)-i-1], str[i]
}
// 以空格为分隔符区分单词
return strings.Join(str, " ")
}