题解 | #字符串排序#
字符串排序
http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584
package main
import (
"bufio"
"fmt"
"io"
"os"
"strings"
)
func main() {
bucketLow := ""
for i := 'a'; i <= 'z'; i++ {
bucketLow += string(i)
}
bucketUp := ""
for i := 'A'; i <= 'Z'; i++ {
bucketUp += string(i)
}
inputReader := bufio.NewReader(os.Stdin)
for {
input, err := inputReader.ReadString('\n')
if err == io.EOF {
break
}
input = strings.Trim(input, "\r\n")
inputLower := strings.ToLower(input)
m := make(map[string][]string)
for index, v := range inputLower {
if !strings.Contains(bucketLow, string(v)) {
continue
}
m[string(v)] = append(m[string(v)], string(input[index]))
}
temp := ""
for _, v := range bucketLow {
if ss, found := m[string(v)]; found {
for _, v := range ss {
temp += string(v)
}
}
}
res := ""
idx := 0
for i := 0; i < len(input); i++ {
if strings.Contains(bucketLow, string(input[i])) || strings.Contains(bucketUp, string(input[i])) {
res += string(temp[idx])
idx++
} else {
res += string(input[i])
}
}
fmt.Println(res)
}
}