Computer >> Máy Tính >  >> Lập trình >> Python

Tìm ký tự thứ k của chuỗi được giải mã - Đặt - 2 trong Python


Giả sử chúng ta có một chuỗi được mã hóa trong đó số lần lặp lại của các chuỗi con được biểu diễn dưới dạng chuỗi con theo sau là số chuỗi con. Ví dụ:nếu chuỗi là "pq2rs2" và k =5, thì đầu ra sẽ là 'r', điều này là do chuỗi được giải mã là "pqpqrsrs" và ký tự thứ 5 là 'r'. Chúng tôi phải lưu ý rằng tần suất của chuỗi con được mã hóa có thể có nhiều hơn một chữ số.

Vì vậy, nếu đầu vào là string ="pq4r2ts3" và k =11, thì đầu ra sẽ là i, vì chuỗi là pqpqpqpqrrtststs

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • được mã hóa:=chuỗi trống

  • lần xuất hiện:=0, i:=0

  • while i

    • temp:=chuỗi trống

    • sự xuất hiện:=0

  • trong khi i

    • temp:=temp + str [i]

    • i:=i + 1

  • trong khi i

    • xuất hiện:=xuất hiện * 10 + ASCII của (str [i]) - ASCII của ('0')

    • i:=i + 1

  • cho j trong phạm vi 1 đến lần xuất hiện + 1, tăng 1, thực hiện

    • được mã hóa:=encoded + temp

  • nếu lần xuất hiện giống 0, thì

    • được mã hóa:=encoded + temp

  • trả về được mã hóa [k - 1]

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

"pq4r2ts3", 11

Đầu ra

t