package anagram import ( "sort" "strings" ) type byByte []byte func (b byByte) Len() int { return len(b) } func (b byByte) Less(i, j int) bool { return b[i] < b[j] } func (b byByte) Swap(i, j int) { b[i], b[j] = b[j], b[i] } func Detect(s string, cand []string) []string { var ret []string s = strings.ToLower(s) b := byByte(s) sort.Sort(b) for _, v := range cand { v = strings.ToLower(v) if len(v) == len(s) && v != s { c := byByte(v) sort.Sort(c) if string(c) == string(b) { ret = append(ret, v) } } } return ret }