在Python中找到合成字符串中特定索引处的字母的程序

在Python中找到合成字符串中特定索引处的字母的程序

假设我们有一个字符串’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中所有字母的列表的元组的新列表
  • while 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
    • while i < input_sorted的长度, 执行以下操作
      • val:input_sorted[i, 0]
      • temp1:[input_sorted[i,1]]
      • j:i + 1
      • while j < input_sorted的长度,且input_sorted[j,0]等于val时,执行以下操作
      • 在temp1的末尾插入input_sorted[j,1]
      • j :j + 1
      • 将(pre+val,temp1)插入stk_list的末尾
      • 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教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程