Python中索引處的解碼字串
假設給定一個編碼字串S。我們必須找到並將解碼後的字串寫入磁帶,這裡編碼字串一次讀取一個字元,並執行以下步驟:
- 如果讀取的字元是字母,則該字母直接寫入磁帶。
- 如果讀取的字元是數字,則整個當前磁帶將重複寫入數字-1次。
現在,如果給定某個編碼字串 S 和索引 K,則查詢並返回解碼字串中的第 K 個字母(從 1 開始索引)。
因此,如果字串是“hello2World3”,k = 10,則輸出將是“o”。這是因為解碼後的字串將是“hellohelloWorldhellohelloWorldhellohelloWorld”,所以第 10 個字元是“o”。
為了解決這個問題,我們將遵循以下步驟:
- size := 0
- 對於字串s中的每個i
- 如果i是數字字元,則size := size * i的整數值,否則size := size + 1
- 對於s長度-1到0的範圍內的i
- k := k mod size
- 如果s[i]是數字且k = 0,則返回s[i]
- 如果s[i]是數字,則size減1,否則size := size / s[i]的整數值
- 返回空字串
讓我們看下面的實現以更好地理解:
示例
class Solution(object):
def decodeAtIndex(self, s, k):
"""
:type S: str
:type K: int
:rtype: str
"""
size = 0
for i in s:
if i.isdigit():
size *= int(i)
else:
size += 1
#print(size)
for i in range(len(s) - 1, -1, -1):
k %= size
if s[i].isalpha() and k == 0:
return s[i]
if s[i].isalpha():
size -=1
else:
size /= int(s[i])
return ""
ob = Solution()
print(ob.decodeAtIndex("hello2World3", 10))輸入
"hello2World3"
10
ob.decodeAtIndex("hello2World3", 10)輸出
o
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP