summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAndinus <andinus@nand.sh>2020-04-06 22:10:32 +0530
committerAndinus <andinus@nand.sh>2020-04-06 22:10:32 +0530
commit0121a30a7d0fc67f54dabc56b0b4aa030ac3dac4 (patch)
tree02fd9f7d984a1db7a0d3b6cf0cd24c8a01a6ec84
parent2e4e8910eb431d10340a29fa797cd0fc8fd4e2db (diff)
downloadgrus-0121a30a7d0fc67f54dabc56b0b4aa030ac3dac4.tar.gz
Add package lexical
-rw-r--r--lexical/slowsort.go17
-rw-r--r--lexical/sort.go19
2 files changed, 36 insertions, 0 deletions
diff --git a/lexical/slowsort.go b/lexical/slowsort.go
new file mode 100644
index 0000000..79f0e62
--- /dev/null
+++ b/lexical/slowsort.go
@@ -0,0 +1,17 @@
+package lexical
+
+import (
+	"sort"
+	"strings"
+)
+
+// SlowSort returns string in lexical order. This function is slower
+// than Lexical.
+func SlowSort(word string) (sorted string) {
+	// Convert word to a slice, sort the slice.
+	t := strings.Split(word, "")
+	sort.Strings(t)
+
+	sorted = strings.Join(t, "")
+	return
+}
diff --git a/lexical/sort.go b/lexical/sort.go
new file mode 100644
index 0000000..5ad27f2
--- /dev/null
+++ b/lexical/sort.go
@@ -0,0 +1,19 @@
+package lexical
+
+import "sort"
+
+// Sort takes a string as input and returns the lexical order.
+func Sort(word string) (sorted string) {
+	// Convert the string to []rune.
+	var r []rune
+	for _, char := range word {
+		r = append(r, char)
+	}
+
+	sort.Slice(r, func(i, j int) bool {
+		return r[i] < r[j]
+	})
+
+	sorted = string(r)
+	return
+}