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
广告