华为OD(C卷,100分)- 输出指定字母在字符串的中的索引

(C卷,100分)- 输出指定字母在字符串的中的索引

题目描述

给定一个字符串,把字符串按照大写在前小写在后排序,输出排好后的第 K 个字母在原来字符串的索引。
相同字母输出第一个出现的位置。

输入描述

输出描述

用例
输入 hAkDAjByBq 4
输出 6
说明 排好序后 AABBDhjkqy,第 4 个是 B,第一个出现的在原字符串 6 这个位置。(注:索引是从 0 开始)

题目解析

简单的排序,以及字符串操作考察。
用例中的排序规则其实就是字典序排序。

int cmp(const void *a,const void *b){
     return (*(char*)a)-(*(char*)b);
}
int main(){
     char s[100];
     int k;
     scanf("%s %d",s,&k);
     int len=strlen(s);
      char copy[len];
     strcpy(copy,s);
     qsort(copy,len,sizeof(char),cmp);
     if(k>len) k=len;
     char tar=copy[k-1];
     printf("%ld",strchr(s,tar)-s);
}

你可能感兴趣的:(#,华为OD机试-字符串,华为od,c语言,算法)