Python 中解密字符串的第 k 个字符 - 集 - 2
假设我们有一个编码字符串,其中子字符串的重复用子字符串后跟子字符串的计数来表示。例如,如果字符串是“pq2rs2”且 k=5,则输出将是'r',这是因为解密后的字符串是“pqpqrsrs”,第 5 个字符是'r'。我们必须记住,加密子字符串的频率可以超过一位数字。
因此,如果输入类似于字符串 =“pq4r2ts3”且 k = 11,则输出将是 i,因为字符串是 pqpqpqpqrrtststs
为了解决这个问题,我们将遵循以下步骤:
encoded := 空字符串
occurrence := 0, i := 0
当 i < str 的大小 时,执行
temp := 空字符串
occurrence := 0
当 i < str 的大小 且 str[i] 是字母时,执行
temp := temp + str[i]
i := i + 1
当 i < str 的大小 且 str[i] 是数字时,执行
occurrence := occurrence * 10 + str[i] 的 ASCII 码 - '0' 的 ASCII 码
i := i + 1
对于 j 从 1 到 occurrence + 1,递增 1,执行
encoded := encoded + temp
如果 occurrence 等于 0,则
encoded := encoded + temp
返回 encoded[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
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP