字符串筛选排序
标题:字符串筛选排序 | 时间限制:1秒 | 内存限制:32768K | 语言限制:不限
输入一个由n个大小写字母组成的字符串,按照Ascii码值从小到大的排序规则,查找字符串中第k个最小ascii码值的字母(k>=1),输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为0)。

k如果大于字符串长度,则输出最大ascii值的字母所在字符串的位置索引,如果有重复的字母,则输出字母的最小位置索引。
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str;
int k;
getline(cin,str);
cin>>k;
int result = 0;
string newStr = str;
sort(newStr.begin(),newStr.end());
int len = str.size();
char targetCh;
if(k < len)
{
targetCh = newStr[k-1];
}
else{
targetCh = newStr[len-1];
}
result = str.find(targetCh);
cout<<result;
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define MAX_CHAR_NUMBER 1000
int compare(const void *a, const void *b) { return (*(char *)a - *(char *)b); }
int main() {
char input[MAX_CHAR_NUMBER];
int k;
scanf("%s", input);
scanf("%d", &k);
int length = strlen(input);
if(k>length){
k=length;
}
char *sort;
sort = (char *)calloc(length, sizeof(char));
strcpy(sort, input);
qsort(sort, length, sizeof(char), compare);
char c = sort[k - 1];
for (int i = 0; i < length; i++) {
if (c == input[i]) {
printf("%d", i);
break;
}
}
return 0;
}

查看7道真题和解析