题解 | #字符串排序#

字符串排序

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)
	}
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务