942 leetcode 增減字串匹配

2021-09-25 07:43:37 字數 1259 閱讀 9512

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

【題解】

題目說的不好鴨,其實並不是任意返回乙個指標,而是分別輸出乙個【從0開始的遞增數列】和乙個【從returnsize開始的遞減數列】

如果一開始就能看明白題目是這個樣子我怎麼會這麼弟弟……

/**

* note: the returned array must be malloced, assume caller calls free().

*/int

*distringmatch

(char

* s,

int* returnsize)

return returnarr;

}

【結果】

這個上交了之後著實弟弟,100 ms 12.8 mb太過於慢了……

之後看了dalao們寫的題解,我才發現,原來switch在提速上有奇效。

在判斷種類不多或者不連續的時候,優先使用switch而非if,能夠提公升很多速度

/**

* note: the returned array must be malloced, assume caller calls free().

*/int

*distringmatch

(char

* s,

int* returnsize)

}return returnarr;

}

【結果】

執行用時 :56 ms, 在所有 c 提交中擊敗了97.18%的使用者

記憶體消耗 :12.9 mb, 在所有 c 提交中擊敗了87.91%的使用者

啊我好了

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 增減字串匹配

是有點難懂了,給出乙個字串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中選...