输入一个由N个大小写字母组成的字符串 按照ASCII码值从小到大进行排序 查找字符串中第K个最小ASCII码值的字母(k>=1) 输出该字母所在字符串中的位置索引(字符串的第一个位置索引为0) k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引 如果有重复字母则输出字母的最小位置索引
输入 第一行输入一个由大小写字母组成的字符串 第二行输入k k必须大于0 k可以大于输入字符串的长度 输出 输出字符串中第k个最小ASCII码值的字母所在字符串的位置索引 ,k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引, 如果第k个最小ASCII码值的字母存在重复 则输出该字母的最小位置索引
package main
import (
"fmt"
"sort"
)
func main() {
var inputStr string
fmt.Scan(&inputStr)
asciiList := make([]rune, len(inputStr))
for i, i2 := range inputStr {
asciiList[i] = i2
}
var k int
fmt.Scan(&k)
sort.Slice(asciiList, func(i, j int) bool {
return asciiList[i] < asciiList[j]
})
kCharacter := ""
if k > len(asciiList) {
kCharacter = string(asciiList[len(asciiList)-1])
} else {
for i, r := range asciiList {
if i == k-1 {
kCharacter = string(r)
}
}
}
output := 0
for i, i2 := range inputStr {
if string(i2) == kCharacter {
output = i
break
}
}
fmt.Println(output)
}
此题比较简单,但是有一个细节容易忽视:当字符存在重复的时候,要及时break循环,这样才能满足题目要求,只获取第一个字符