Skip to content
This repository was archived by the owner on Sep 20, 2023. It is now read-only.

Commit bdb35ee

Browse files
committed
1081 wrong answer
1 parent 11b8949 commit bdb35ee

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,45 @@
11
package problem1081
22

3+
import (
4+
"sort"
5+
"strings"
6+
)
7+
38
func smallestSubsequence(text string) string {
9+
rec := make([][]int, 26)
10+
for i, b := range text {
11+
c := b - 'a'
12+
rec[c] = append(rec[c], i)
13+
}
14+
15+
letters := make([]*letter, 0, 26)
16+
for i := 0; i < 26; i++ {
17+
if len(rec[i]) == 0 {
18+
continue
19+
}
20+
letters = append(letters, &letter{
21+
char: byte(i + 'a'),
22+
indexs: rec[i],
23+
})
24+
}
25+
26+
sort.Slice(letters, func(i int, j int) bool {
27+
return isLess(letters[i], letters[j])
28+
})
29+
30+
var sb strings.Builder
31+
for _, l := range letters {
32+
sb.WriteByte(l.char)
33+
}
34+
35+
return sb.String()
36+
}
37+
38+
type letter struct {
39+
char byte
40+
indexs []int
41+
}
442

5-
return ""
43+
func isLess(a, b *letter) bool {
44+
return a.char < b.char && a.indexs[0] < b.indexs[len(b.indexs)-1]
645
}

0 commit comments

Comments
 (0)