【华为OD机试真题 C++】1006 - 字符串筛选排序
文章目录
-
- 一、题目
-
- 🔸题目描述
- 🔸输入输出
- 🔸样例1
- 🔸样例2
- 二、代码参考
- 作者:KJ.JK
🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
🍂个人博客首页: 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码值的字母存在重复 则输出该字母的最小位置索引
🔸样例1
输入
AbCdeFG
3输出
5说明:
根据ASCII码值排序,第三个ASCII码值的字母为F
F在字符串中位置索引为5(0为字符串的第一个字母位置索引)
🔸样例2
输入
fAdDAkBbBq
4输出
6说明:
根据ASCII码值排序前4个字母为AABB由于B重复则只取B的第一个最小位置索引6,
而不是第二个B的位置索引8
二、代码参考
#include <bits/stdc++.h>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;}
}
作者:KJ.JK
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习