个人博客首页: KJ.JK
系列专栏:华为OD机试真题(C++)
专栏介绍: 华为OD机试真题汇总,使用C++来进行解析解答实现,帮助大家更好的AC题目,分享各种解题思路,让大家更好通过机试,持续更新中,欢迎大家订阅
输入一个由N个大小写字母组成的字符串
按照ASCII码值从小到大进行排序
查找字符串中第K个最小ASCII码值的字母(k>=1)
输出该字母所在字符串中的位置索引(字符串的第一个位置索引为0)
k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引
如果有重复字母则输出字母的最小位置索引
输入
第一行输入一个由大小写字母组成的字符串
第二行输入k k必须大于0 k可以大于输入字符串的长度
输出
输出字符串中第k个最小ASCII码值的字母所在字符串的位置索引
,k如果大于字符串长度则输出最大ASCII码值的字母所在字符串的位置索引,
如果第k个最小ASCII码值的字母存在重复 则输出该字母的最小位置索引
输入
AbCdeFG
3
输出
5
说明:
根据ASCII码值排序,第三个ASCII码值的字母为F
F在字符串中位置索引为5(0为字符串的第一个字母位置索引)
输入
fAdDAkBbBq
4
输出
6
说明:
根据ASCII码值排序前4个字母为AABB由于B重复则只取B的第一个最小位置索引6,
而不是第二个B的位置索引8
#include
using namespace std;
int main()
{
string str;
int k;
while (cin >> str >> k) {
vector<char> charlist;
for (char c: str) charlist.push_back(c);
sort(charlist.begin(), charlist.end());
cout << str.find(k >= str.size() ? charlist.back() : charlist.at(k - 1)) << endl;
}
}
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习