package main import "fmt" func isMapEqual(a map[uint8]int, b map[uint8]int) bool { for k, v := range a { if val, ok := b[k]; ok { if val != v { return false } } else { return false } } for k, v := range b { if val, ok := a[k]; ok { if val != v { return false } } else { return false } } return true } func checkStrings(s1 string, s2 string) bool { mp1 := make(map[uint8]int) mp2 := make(map[uint8]int) for i := 0; i < len(s1); i += 2 { mp1[s1[i]]++ mp2[s2[i]]++ } if !isMapEqual(mp1, mp2) { return false } mp1 = make(map[uint8]int) mp2 = make(map[uint8]int) for i := 1; i < len(s1); i += 2 { mp1[s1[i]]++ mp2[s2[i]]++ } if !isMapEqual(mp1, mp2) { return false } return true } func main() { fmt.Printf("%v", checkStrings("abcdba", "cabdab")) }