用 Python 编写程序,在合成字符串中找出特定索引处的字母
pythonserver side programmingprogramming更新于 2025/12/18 16:12:17
假设,我们得到了一个字符串"input_str"。现在,我们被要求从给定的字符串中确定每个可能的子字符串,然后按词典顺序将所有子字符串一个接一个地连接成另一个字符串。我们还提供了一个整数值 k。我们的任务是从连接后的字符串中返回索引 k 处的字母。
因此,如果输入为 input_str = 'pqrs', k = 6,则输出为 p
给定字符串的子字符串按词汇顺序为 p、pq、pqr、pqrs、q、qr、qrs、r、rs、s。
如果我们连接这些字符串,它将变成 ppqpqrpqrsqqrqrsrrss。在位置 6,字母为 'p'。 (索引从 0 开始)。
为了解决这个问题,我们将遵循以下步骤 −
- stk_list := 一个新列表,其中包含一个包含空白字符串的元组和一个来自 input_str 的所有字母的列表
- 当 stk_list 不为空时,执行
- pre := 从 stk_list 中删除最后一个元素
- temp := 从 stk_list 中删除最后一个元素
- 如果 k < pre 的大小,然后
- 返回 pre[k]
- k := k - pre 的大小
- input_sorted := 一个新列表,其中包含包含 input_str 的字母及其在 input_str 中的位置的元组
- 根据元组的第二个值按降序对列表 input_sorted 进行排序
- i := 0
- 当 i < input_sorted 的大小时,执行
- val := input_sorted[i, 0]
- temp1 := [input_sorted[i, 1]]
- j := i + 1
- 当 j < input_sorted 的大小和 input_sorted[j, 0] 与 val 相同,则执行
- 在 temp1 末尾插入 input_sorted[j, 1]
- j := j + 1
- 在 stk_list 末尾插入 (pre+val, temp1)
- i := j
- 返回 null
示例
让我们看看下面的实现以便更好地理解 −
def solve(input_str, k):
stk_list = [("",list(range(len(input_str))))]
while stk_list:
pre, temp = stk_list.pop()
if k < len(pre):
return pre[k]
k -= len(pre)
input_sorted = sorted([(input_str[i],i+1) for i in temp if i < len(input_str)], reverse=True)
i = 0
while i < len(input_sorted):
val = input_sorted[i][0]
temp1 = [input_sorted[i][1]]
j = i + 1
while j < len(input_sorted) and input_sorted[j][0]== val:
temp1.append(input_sorted[j][1])
j += 1
stk_list.append((pre+val, temp1))
i = j
return None
print(solve('pqrs', 6))
输入
'pqrs', 6
输出
p
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

