| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package main
- import "fmt"
- func reverse(s string) string {
- runes := []rune(s)
- n, h := len(runes), len(runes)/2
- for i := 0; i < h; i++ {
- runes[i], runes[n-1-i] = runes[n-1-i], runes[i]
- }
- return string(runes)
- }
- func main() {
- // reverse a string:
- str := "Google"
- sl := []byte(str)
- var rev [100]byte
- j := 0
- for i := len(sl) - 1; i >= 0; i-- {
- rev[j] = sl[i]
- j++
- }
- str_rev := string(rev[:])
- fmt.Printf("The reversed string is -%s-\n", str_rev)
- // variant: "in place" using swapping
- str2 := "Google"
- sl2 := []byte(str2)
- for i, j := 0, len(sl2)-1; i < j; i, j = i+1, j-1 {
- sl2[i], sl2[j] = sl2[j], sl2[i]
- }
- fmt.Printf("The reversed string is -%s-\n", string(sl2))
- // variant: using [] int for runes (necessary for Unicode-strings!):
- s := "My Test String!"
- fmt.Println(s, " --> ", reverse(s))
- }
- /* Output:
- The reversed string is -elgooG-
- The reversed string is -elgooG-
- My Test String! --> !gnirtS tseT yM
- */
|