How to reverse a string in Go?

前端 未结 28 1988
天涯浪人
天涯浪人 2020-12-04 06:45

How can we reverse a simple string in Go?

28条回答
  •  谎友^
    谎友^ (楼主)
    2020-12-04 07:14

    package reverseString
    
    import "strings"
    
    // ReverseString - output the reverse string of a given string s
    func ReverseString(s string) string {
    
        strLen := len(s)
    
        // The reverse of a empty string is a empty string
        if strLen == 0 {
            return s
        }
    
        // Same above
        if strLen == 1 {
            return s
        }
    
        // Convert s into unicode points
        r := []rune(s)
    
        // Last index
        rLen := len(r) - 1
    
        // String new home
        rev := []string{}
    
        for i := rLen; i >= 0; i-- {
            rev = append(rev, string(r[i]))
        }
    
        return strings.Join(rev, "")
    }
    

    Test

    package reverseString
    
    import (
        "fmt"
        "strings"
        "testing"
    )
    
    func TestReverseString(t *testing.T) {
    
        s := "GO je úžasné!"
        r := ReverseString(s)
    
        fmt.Printf("Input: %s\nOutput: %s", s, r)
    
        revR := ReverseString(r)
    
        if strings.Compare(s, revR) != 0 {
            t.Errorf("Expecting: %s\n. Got: %s\n", s, revR)
        }
    }
    

    Output

    Input: GO je úžasné!
    Output: !énsažú ej OG
    PASS
    ok      github.com/alesr/reverse-string 0.098s
    

提交回复
热议问题