How to reverse the middle N characters of a string in Go

1 Answer

0 votes
package main

import (
	"fmt"
	"math"
)

func reverseMiddleNCharacters(str string, N int) string {
	if N <= 0 || N > len(str) {
		return str
	}

	start := int(math.Floor(float64(len(str) - N) / 2))
	end := start + N

	beforeMiddle := str[:start]
	middle := reverseString(str[start:end])
	afterMiddle := str[end:]

	return beforeMiddle + middle + afterMiddle
}

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

func main() {
	s := "abCDEFgh"
	N := 4

	fmt.Println(reverseMiddleNCharacters(s, N))
}


/*
run:

abFEDCgh

*/

 



answered Sep 12, 2024 by avibootz
...