返回目录
题目描述
输入一个由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为字符串的第一个字母位置索 引) |
题目解析
简单的字符串操作题。
Python算法源码
def get_result(s, k):
# 将字符串转换为字符列表并进行排序
chars = sorted(s)
# 如果 k 大于字符串长度,则将 k 赋值为字符串长度
if k > len(s):
k = len(s)
# 获取排序后第 k 个位置的字符
tar = chars[k - 1]
# 返回排序后第 k 个位置的字符在原字符串中的索引
return s.index(tar)
if __name__ == "__main__":
# 输入字符串
s = input()
# 输入 k 值
k = int(input())
# 调用函数并打印结果
print(get_result(s, k))
C算法源码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 比较函数,用于 qsort 函数
int compare(const void *a, const void *b) {
return (*(char *)a - *(char *)b);
}
// 函数:获取排序后第 k 个位置的字符在原字符串中的索引
int getResult(char *str, int k) {
// 将字符串转换为字符数组
char chars[strlen(str) + 1];
strcpy(chars, str);
// 使用快速排序对字符数组进行排序
qsort(chars, strlen(str), sizeof(char), compare);
// 如果 k 大于字符串长度,则将 k 赋值为字符串长度
if (k > strlen(str)) k = strlen(str);
// 获取排序后第 k 个位置的字符
char tar = chars[k - 1];
// 返回排序后第 k 个位置的字符在原字符串中的索引
return strchr(str, tar) - str;
}
int main() {
char str[1000]; // 声明一个字符串数组,用于存储用户输入的字符串
int k; // 声明一个整型变量,用于存储用户输入的 k 值
// 提示用户输入字符串
printf("Enter string: ");
scanf("%s", str); // 获取用户输入的字符串
// 提示用户输入 k 值
printf("Enter k: ");
scanf("%d", &k); // 获取用户输入的 k 值
// 调用函数获取结果并输出
printf("Index of kth character: %d\n", getResult(str, k));
return 0;
}
Java算法源码
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter string: "); // 提示用户输入字符串
String str = sc.next(); // 获取用户输入的字符串
System.out.print("Enter k: "); // 提示用户输入 k 值
int k = sc.nextInt(); // 获取用户输入的 k 值
System.out.println("Index of kth character: " + getResult(str, k)); // 输出结果
}
// 函数:获取排序后第 k 个位置的字符在原字符串中的索引
public static int getResult(String str, int k) {
char[] chars = str.toCharArray(); // 将字符串转换为字符数组
Arrays.sort(chars); // 对字符数组进行排序
if (k > str.length()) k = str.length(); // 如果 k 大于字符串长度,则将 k 赋值为字符串长度
char tar = chars[k - 1]; // 获取排序后第 k 个位置的字符
return str.indexOf(tar); // 返回排序后第 k 个位置的字符在原字符串中的索引
}
}
3 条评论
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]