返回目录

题目描述

输入一个由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 个位置的字符在原字符串中的索引
    }
}
最后修改:2024 年 04 月 05 日
如果觉得我的文章对你有用,请随意赞赏