go判斷兩個字串是否是是相互打亂的,也就是說它們有著相同的字元,但 是對應不同的順序。
阿新 • • 發佈:2019-01-01
自己寫了2個函式才做出來,不知道有沒有更簡潔的辦法。package main import ( "fmt" "strings" "unicode/utf8" ) func main() { fmt.Println(string([]rune("starting chat...")[2])) fmt.Println(string([]rune("你好,世界!")), []byte("你好,世界!")) fmt.Println("你好,世界!"[:2], "hello,world!"[:2], []rune("你好,世界")) fmt.Println("\\", utf8.RuneCountInString("你好,世界!")) fmt.Println(string(1234567)) fmt.Println("------------------------------------------------") str1 := "abcdefgw我habc" str2 := "ebadcgfh我cbaw" // fmt.Println(RemoveTheSame(str1)) fmt.Println(IsSame(str1, str2)) } // slice去重處理 func RemoveTheSame(s string) string { s1 := []string{} m := make(map[int]string) for _, v := range s { m[int(v)] = "ok" } for k, _ := range m { s1 = append(s1, string(k)) } return strings.Join(s1, "") } // 判斷2個字串所含的字元及數量相同 func IsSame(str1 string, str2 string) bool { count := 0 number := 0 str3 := RemoveTheSame(str1) str4 := RemoveTheSame(str2) if len(str3) == len(str4) { for _, v := range []rune(str3) { if strings.Contains(str4, string(v)) { count++ } } } if count == len([]rune(str3)) { for i := 0; i < len([]rune(str3)); i++ { if strings.Count(str1, string([]rune(str3)[i])) == strings.Count(str2, string([]rune(str3)[i])) { number++ } } } if number == len([]rune(str3)) { return true } return false }