summaryrefslogtreecommitdiff
path: root/go/anagram/anagram.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/anagram/anagram.go')
-rw-r--r--go/anagram/anagram.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/go/anagram/anagram.go b/go/anagram/anagram.go
new file mode 100644
index 0000000..e7bf2f9
--- /dev/null
+++ b/go/anagram/anagram.go
@@ -0,0 +1,30 @@
+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
+}