字符串筛选排序
标题:字符串筛选排序 | 时间限制: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; }