string_reverse.go 971 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package main
  2. import "fmt"
  3. func reverse(s string) string {
  4. runes := []rune(s)
  5. n, h := len(runes), len(runes)/2
  6. for i:= 0; i < h; i ++ {
  7. runes[i], runes[n-1-i] = runes[n-1-i], runes[i]
  8. }
  9. return string(runes)
  10. }
  11. func main() {
  12. // reverse a string:
  13. str := "Google"
  14. sl := []byte(str)
  15. var rev [100]byte
  16. j := 0
  17. for i:=len(sl)-1; i >= 0; i-- {
  18. rev[j] = sl[i]
  19. j++
  20. }
  21. str_rev := string(rev[:])
  22. fmt.Printf("The reversed string is -%s-\n", str_rev)
  23. // variant: "in place" using swapping
  24. str2 := "Google"
  25. sl2 := []byte(str2)
  26. for i, j := 0, len(sl2) - 1; i < j; i, j = i+1, j-1 {
  27. sl2[i], sl2[j] = sl2[j], sl2[i]
  28. }
  29. fmt.Printf("The reversed string is -%s-\n", string(sl2))
  30. // variant: using [] int for runes (necessary for Unicode-strings!):
  31. s := "My Test String!"
  32. fmt.Println(s, " --> ", reverse(s))
  33. }
  34. /* Output:
  35. The reversed string is -elgooG-
  36. The reversed string is -elgooG-
  37. My Test String! --> !gnirtS tseT yM
  38. */