funcsortString(s string)string { m := [26]uint8{} for i := range s { m[s[i]-97]++ } var ans strings.Builder for i := 0; i < len(s); { for j := 0; j < 26; j++ { if m[j] > 0 { ans.WriteString(string(j+97)) m[j]-- i++ } } for j := 25; j >= 0; j-- { if m[j] > 0 { ans.WriteString(string(j+97)) m[j]-- i++ } } } return ans.String() }
funcfindTheLongestSubstring(s string)int { first := make([]int, 32) for i := range first { first[i] = math.MinInt32 } first[0] = -1// 特殊处理,如果出现 s[0...i] 状态为 0,那么其长度为 i + 1。 ans, cur := 0, 0 for i := range s { switch s[i] { case'a': cur ^= 1 case'e': cur ^= 2 case'i': cur ^= 4 case'o': cur ^= 8 case'u': cur ^= 16 } if first[cur] == math.MinInt32 { first[cur] = i } else { if i-first[cur] > ans { ans = i - first[cur] } } } return ans }