How to reverse the middle words of a string in Go

1 Answer

0 votes
package main

import (
    "fmt"
    "strings"
)

func reverse(s string) string {
    r := []rune(s)
    for i, j := 0, len(r) - 1; i < j; i, j = i + 1, j - 1 {
        r[i], r[j] = r[j], r[i]
    }
    
    return string(r)
}

func reverseMiddleWords(s string) string {
    words := strings.Fields(s) // handles multiple spaces

    if len(words) < 3 {
        return s // nothing to reverse
    }

    for i := 1; i < len(words) - 1; i++ {
        words[i] = reverse(words[i])
    }

    return strings.Join(words, " ")
}

func main() {
    input := "Hello how are you today"
    
    fmt.Println(reverseMiddleWords(input))
}



/*
run:

Hello woh era uoy today

*/

 



answered Dec 25, 2025 by avibootz
...