查找解密字符串的第k个字符-Set – 2 in Python
假设我们有一个编码字符串,其中子字符串的重复表示为子字符串,后跟子字符串的计数。例如,如果字符串为“ pq2rs2”且k = 5,则输出为“ r”,这是因为解密后的字符串为“ pqpqrsrs”,而第5个字符为“ r”。我们必须记住,加密子字符串的频率可以超过一位数。
因此,如果输入类似于string =“ pq4r2ts3”且k = 11,则输出将为i,因为字符串为pqpqpqpqrrtststs
为了解决这个问题,我们将遵循以下步骤-
编码:=空字符串
出现:= 0,i:= 0
当我<str的大小时
temp:=空字符串
发生:= 0
虽然我<str的大小,并且str [i]是一个字母,但是
temp:= temp + str [i]
我:=我+ 1
当i <str的大小并且str [i]是一个数字时,
出现:=出现* 10 +(str [i])的ASCII-('0')的ASCII
我:=我+ 1
对于范围1到出现1的j,增加1,执行
编码:=编码+临时
如果出现次数等于0,则
编码:=编码+临时
返回已编码[k-1]
示例
让我们看下面的实现以更好地理解-
def find_kth_char(str, k):encoded = ""
occurrence = 0
i = 0
while i < len(str):
temp = ""
occurrence = 0
while (i < len(str) and ord(str[i]) >= ord('a') and ord(str[i]) <= ord('z')):
temp += str[i]
i += 1
while (i < len(str) and ord(str[i]) >= ord('1') and ord(str[i]) <= ord('9')):
occurrence = occurrence * 10 + ord(str[i]) - ord('0')
i += 1
for j in range(1, occurrence + 1, 1):
encoded += temp
if occurrence == 0:
encoded += temp
return encoded[k - 1]
str = "pq4r2ts3"
k = 11
print(find_kth_char(str, k))
输入值
"pq4r2ts3", 11
输出结果
t
以上是 查找解密字符串的第k个字符-Set – 2 in Python 的全部内容, 来源链接: utcz.com/z/316221.html