解题思路

  • 对指定字符串按a-z和A-Z的顺序进行排序,只要构造a-z的顺序字符串然后保留对比如果相等则将该字符串添加到零时数组中
  • 然后将原有字符串转化为数组,将原有数组中的字符替换为零时数组中的按序字符
package main

import(
    "fmt"
    "bufio"
    "os"
)

func main(){
    in := bufio.NewScanner(os.Stdin)
    for in.Scan(){
        str := in.Text()
        fmt.Println(sortString(str))
    }

}

func sortString(s string) string{
    char := []byte{}
    // 1.将字母按a-z的顺序放入数组中
    for i := 0; i < 26;i++{
        for j :=0; j<len(s);j++{
            if s[j] == 'a' + uint8(i) || s[j] == 'A' + uint8(i){ //a-z A-Z
                 char = append(char, s[j])
            }

        }
    }
    b := []byte(s)
    // 2.将原字符串中的字符依次替换为有序的字母
    for i,k := 0,0;i<len(s);i++{ 
        if s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z'{
            b[i] = char[k]
            k++
        }
    }
    return string(b)
}