查找解密字符串的第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