是有點難懂了,給出乙個字串s,s全部由『d』和『i』組成,然後現在需要解出乙個陣列,而這個陣列需要和s相匹配。假設s的長度為n,那麼這個陣列的長度是n+1,並且值是集合的任意排列。給出乙個例子,假設有字串s1 = "didid",那麼s1的長度為5,那麼答案就必須是集合的乙個排序,可能是,也可能是等等。
而這個排序必須是與字串s相匹配的。這裡上題目的example:
「idid」
[0,4,1,3,2]
s="idid"
a=[0,1,2,3,4]
1.迭代s
2.碰到「i」就找a裡面的最小值,然後把這個最小值放到ret陣列裡面並移出a。
3.碰到「d」就找a裡面的最大值,然後把這個最大值放到ret陣列裡面並移出a。
4.最後因為a比s長度大1,所以迭代完後a裡面還會剩乙個元素,把這個元素放進ret
5.ret就是最後的結果陣列
ret=[0,4,1,3,2]
classsolution:
defdistringmatch(self, s):
"""因為是遞增的a,所以列表頭永遠指向最小,列表尾永遠指向最大
通過出隊和出棧的方法實現
"""a=list(range(len(s)+1))
ret=
for x in
range(len(s)):
if s[x]=="i"
:
else
:
#print(ret)
return ret
942 增減字串匹配
給定只含 i 增大 或 d 減小 的字串 s 令 n s.length。返回 0,1,n 的任意排列 a 使得對於所有 i 0,n 1,都有 如果 s i i 那麼 a i a i 1 如果 s i d 那麼 a i a i 1 示例 1 輸出 idid 輸出 0,4,1,3,2 示例 2 輸出 i...
942 增減字串匹配
給定只含 i 增大 或 d 減小 的字串s,令n s.length。返回 0,1,n 的任意排列a使得對於所有i 0,n 1,都有 示例 1 輸入 idid 輸出 0,4,1,3,2 示例 2 輸入 iii 輸出 0,1,2,3 示例 3 輸入 ddi 輸出 3,2,0,1 對符合條件的pick中選...
942 leetcode 增減字串匹配
給定只含 i 增大 或 d 減小 的字串 s 令 n s.length。返回 0,1,n 的任意排列 a 使得對於所有 i 0,n 1,都有 如果 s i i 那麼 a i a i 1 如果 s i d 那麼 a i a i 1 示例 1 輸出 idid 輸出 0,4,1,3,2 示例 2 輸出 i...