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