給定只含 「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」。
思路:如果按照一般人的填數字去想這個問題肯定是極其麻煩的,想了半個小時始終不得要點 關鍵不在於總共有幾個d幾個i,也不在於什麼根據前後判斷
在於為啥不是遞增遞減(為啥不是0123而是什麼0312)
這個極其核心的奧秘就是
程式根據增減關係每一次都在取極值(最大最小)!所以根據這種思路可以使得數字不重複,每次都能留下足夠的增減空間(因為我們根據他的規則生成了n+1個項)
題解:
class
solution
result[s.
length()
]=max;
// 這裡 min max 都可以, 因為就剩乙個數了
return result;
}}
增減字串匹配
給定只含 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...
148 增減字串匹配
題目描述 給定只含 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...
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...