942 增減字串匹配

2021-09-24 05:53:44 字數 1123 閱讀 2614

給定只含 「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:

輸出:「iii」

輸出:[0,1,2,3]

示例 3:

輸出:「ddi」

輸出:[3,2,0,1]

1 <= s.length <= 1000

s 只包含字元 「i」 或 「d」。

題解

對題目的理解關鍵在於

如果 s[i] == 「i」,那麼 a[i] < a[i+1]

如果 s[i] == 「d」,那麼 a[i] > a[i+1]

當i出現時,總有n存在,使得等式成立,長度為n的s最多有n個i,故出現i時總選擇未用的數字裡最小的,才能使後面的i出現時有數可用

同理適用於d,當d出現時總要選擇當前未用的數字裡最大的

c++

class solution 

else

}res.push_back(l);//res實際大小為n+1,故再將最後乙個未使用數字置入,顯然此時有r==l

return res;

}};

python

class solution(object):

def distringmatch(self, s):

""":type s: str

:rtype: list[int]

"""l=0

r=len(s)

res=

for i in s:

if i=='i':

l=l+1

else:

r=r-1

return res

942 增減字串匹配

是有點難懂了,給出乙個字串s,s全部由 d 和 i 組成,然後現在需要解出乙個陣列,而這個陣列需要和s相匹配。假設s的長度為n,那麼這個陣列的長度是n 1,並且值是集合的任意排列。給出乙個例子,假設有字串s1 didid 那麼s1的長度為5,那麼答案就必須是集合的乙個排序,可能是,也可能是等等。而這...

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