Python 中的 DI 字串匹配
假設我們有一個只包含 "I"(表示增加)或 "D"(表示減少)的字串 S,令 N = S 的長度。我們需要返回 [0, 1, ..., N] 的任意排列 A,使得對於 0, ..., N-1 − 範圍內的所有 i
- 如果 S[i] 為 "I",則 A[i] < A[i+1]
- 否則當 S[i] 為 "D" 時,則 A[i] > A[i+1]
所以,如果輸入為 "IDID",則輸出將為 [0,4,1,3,2]
為了解決這個問題,我們將執行以下步驟 −
- A := 一個從 0 到 N 的列表,其中 N 是 S 的長度。
- res = 一個空列表
- 對於 S 中的每個元素 j,執行
- 如果 j 為 I,則從 A 中刪除最後一個元素並插入到 res 中
- 否則從 A 中刪除第一個元素並插入到 res 中
- 返回 res
讓我們看看以下實現來更好地理解 −
示例
class Solution:
def diStringMatch(self, S):
A=[i for i in range(len(S)+1)]
return [A.pop((j=='I')-1) for j in S]+A
ob = Solution()
print(ob.diStringMatch("IDID"))輸入
"IDID"
輸出
[0, 4, 1, 3, 2]
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP