字符串筛选排序
题目描述:
输入一个由 n 个大小写字母组成的字符串,按照 Ascii 码值从小到大的排序规则,查找字符串中第 k 个最小
ascii 码值的字母(k >= 1),输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为 0)。
k 如果大于字符串长度,则输出最大 ascii 值的字母所在字符串的位置索引,如果有重复的字母,则输出字母的最小位置索引。
输入描述:
第一行输入一个由大小写字母组成的字符串
第二行输入 k,k 必须大于 0,k 可以大于输入字符串的长度
输出描述:
输出字符串中第 k 个最小 ascii 码值的字母所在字符串的位置索引。k 如果大于字符串长度,则输出最大 ascii 值的字母所
在字符串的位置索引,如果第 k 个最小 ascii 码
值的字母存在重复,则输出该字母的最小位置索引。
示例 1:
输入
AbCdeFG
3
输出
5
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
string str;
size_t k;
while(getline(cin,str)){
cin>>k;
if(k<str.size()){
vector<char> vec_1;
for(size_t i=0;i<str.size();++i){
vec_1.push_back(str[i]);
}
sort(vec_1.begin(),vec_1.end());
for(size_t i=0;i<str.size();++i){
if(vec_1[k-1]==str[i]){
cout<<i;
break;
}
}
}
else if(k>=str.size()){
vector<char> vec_2;
for(size_t i=0;i<str.size();++i){
vec_2.push_back(str[i]);
}
sort(vec_2.begin(),vec_2.end());
for(size_t i=0;i<str.size();++i){
if(vec_2[str.size()-1]==str[i]){
cout<<i;
break;
}
}
}
cout<<endl;
}
return 0;
}