【华为机试】2023年真题B卷(python)-输出指定字母在字符串的中的索引

发布时间:2024年01月11日

一、题目

题目描述:

给定一个字符串,把字符串按照大写在前小写在后排序,输出排好后的第 K 个字母在原来字符串的索引。
相同字母输出第一个出现的位置。

二、示例

示例1:
输入输出示例仅供调试,后台判题数据一般不包含示例
输入:
hAkDAjByBq
4
输出:
6
说明:
排好序后 AABBDhjkqy,第 4 个是 B,第一个出现的在原字符串 6 这个位置。(注:索引是从 0 开始)

三、要求

时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K

四、解题思路

  1. 首先,读取输入的字符串和整数K。
  2. 创建一个新的列表sorted_str,将字符串中的字符按照小写字母在前、大写字母在后的顺序进行排序。
  3. 使用enumerate函数遍历sorted_str列表,同时获取字符的索引和值。
  4. 在循环中,判断当前字符是否为字母,并记录已经找到的字母数量。
    • 如果当前字符是字母,将已经找到的字母数量加1,并检查是否为第K个字母。
    • 如果是第K个字母,返回当前字符在原字符串中的索引。
  5. 如果循环结束后仍未找到第K个字母,说明K超出了字符串中字母的数量,返回-1表示无效索引。

五、参考代码?

# -*- coding: utf-8 -*-
'''
@File    :   2023-B-输出指定字母在字符串的中的索引.py
@Time    :   2024/01/07 14:31:10
@Author  :   mgc 
@Version :   1.0
@Desc    :   None
'''

# import os
# import re
# import sys
# import copy
# import math
# import queue
# import functools
# from queue import Queue
# from collections import Counter, defaultdict

def find_kth_char_index(string, k):
    sorted_str = sorted(string, key=lambda x: (x.islower(), x))
    # 按照小写字母在前、大写字母在后的顺序对字符串进行排序

    count = 0
    for index, char in enumerate(sorted_str):
        if char.isalpha():
            count += 1
            if count == k:
                return string.index(char)
                # 返回当前字符在原字符串中的索引

    return -1
    # 如果未找到第k个字母,返回-1表示无效索引


# 读取输入
string = input()
k = int(input())

# 调用函数并输出结果
index = find_kth_char_index(string, k)
print(index)
文章来源:https://blog.csdn.net/u014481728/article/details/135439552
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。