news 2026/4/17 16:28:08

(新卷,100分)- 字符串筛选排序(Java JS Python C)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
(新卷,100分)- 字符串筛选排序(Java JS Python C)

(新卷,100分)- 字符串筛选排序(Java & JS & Python & C)

题目描述

输入一个由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

题目解析

简单的字符串操作题。


根据第二个用例来看,题目要找的第k个,不是去重+升序后的第k个,而只是排序后的第k个。

JavaScript算法源码
/* JavaScript Node ACM模式 控制台输入获取 */ const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); const lines = []; rl.on("line", (line) => { lines.push(line); if (lines.length === 2) { const [str, k] = lines; console.log(getKIndex(str, k)); lines.length = 0; } }); function getKIndex(str, k) { if (k > str.length) k = str.length; const tar = [...str].sort()[k - 1]; return str.indexOf(tar); }
Java算法源码
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); int k = sc.nextInt(); System.out.println(getResult(str, k)); } public static int getResult(String str, int k) { char[] chars = str.toCharArray(); Arrays.sort(chars); if (k > str.length()) k = str.length(); char tar = chars[k - 1]; return str.indexOf(tar); } }
Python算法源码
# 输入获取 s = input() k = int(input()) # 算法入口 def getResult(s, k): chars = list(s) chars.sort() if k > len(s): k = len(s) tar = chars[k - 1] return s.index(tar) # 调用算法 print(getResult(s, k))
C算法源码
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 10000 int cmp(const void* a, const void* b) { return (*(char*) a) - (*(char*) b); } int main() { char s[MAX_SIZE]; gets(s); int k; scanf("%d", &k); int n = strlen(s); char s_cp[n+1]; strcpy(s_cp, s); qsort(s_cp, n, sizeof(char), cmp); if(k > n) { k = n; } char target = s_cp[k - 1]; printf("%lld\n", strchr(s, target) - s); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 15:22:06

【课程设计/毕业设计】机器学习基于CNN卷积网络的动物是否疲劳识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/17 1:58:41

传统开发vsAI生成:RESTful API效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成一个完整的博客平台RESTful API&#xff0c;包含&#xff1a;文章CRUD、分类管理、标签系统、评论功能和用户认证。要求分别用两种方式实现&#xff1a;1) 传统手动编写方式 2…

作者头像 李华
网站建设 2026/4/15 3:42:16

格式化数据分区会清除哪些数据?Windows/Mac如何正确格式化

在电脑使用过程中&#xff0c;格式化数据分区是常见的操作&#xff0c;可能用于解决分区故障、释放空间或准备转让设备等场景。但很多用户对“格式化数据分区会清除哪些数据”存在认知误区&#xff0c;有人认为只是删除可见文件&#xff0c;也有人觉得会彻底销毁所有数据无法恢…

作者头像 李华
网站建设 2026/4/17 16:48:50

2.4G E6工牌应用

工牌特色功能模板自定义功能: 支持文本/条码/二维码/图片。可自主DIY设计内置可改写ID卡: 支持设备改写&#xff0c;适配公司门禁系统多功能物理按键: 短按可切换至下一张内容&#xff0c;支持存储5张图片Qi协议无线充电: 符合WPCV1.2版本Oi无线充协议基站版本支持定位功能适配…

作者头像 李华
网站建设 2026/4/15 13:43:29

论文降重AI工具全面评测:8大网站改写效果对比分析

在AI论文工具的选择上&#xff0c;8款热门平台针对降重、降低AIGC检测率及论文写作等核心功能进行了实测对比&#xff0c;结合效率、准确性和用户体验的综合评估&#xff0c;以下排名基于客观数据与真实反馈得出&#xff0c;帮助用户快速匹配需求。 排名 工具名称 关键优势 …

作者头像 李华