| 1234567891011121314151617181920212223242526 | func removeDuplicateLetters(s string) string {	cnt := make([]int, 256)	for _, c := range s {		cnt[c]++	}	set := make([]bool, 256)	res := make([]rune, 0)	tp := -1	for _, c := range s {		cnt[c]--		if set[c] {			continue		}		// If c is not in stack && stack is not empty && c less than top && top'll appear again, pop top		for tp != -1 && c < res[tp] && 0 < cnt[res[tp]] {			set[res[tp]] = false			res = res[:tp]			tp--		}		res = append(res, c)		set[c] = true		tp++	}	return string(res)}
 |