func reverseWords(s string) string {
var temp []string
i, j := 0, 0
for j < len(s) {
for j < len(s) && s[j] == ' ' {
j ++
}
i = j
if j < len(s) && s[j] != ' '{
for j < len(s) && s[j] != ' ' {
j ++
}
temp = append(temp, s[i:j])
i = j
}
}
var ans string
for i := len(temp) - 1; i >= 0; i -- {
ans += temp[i]
if i != 0 {
ans += " "
}
}
return ans
}
另一种比较简单易懂的方法,无需栈保存单词
func reverseWords(s string) (res string) {
s = " " + s + " "
l, r := len(s) - 1, len(s) - 1
for i := len(s) - 2; i >= 0; i--{
if s[i] == ' '{
l, r = i, l
if r > l + 1{
res = res + s[l + 1:r] + " "
}
}
}
return res[:len(res) - 1]
}