942. DI String Match(python+cpp)
阿新 • • 發佈:2018-11-21
題目:
Given a string
S
that only contains “I” (increase) or “D” (decrease), letN = S.length
.
Return any permutationA
of[0, 1, ..., N]
such that for alli = 0, ..., N-1
:
IfS[i] == "I"
, thenA[i] < A[i+1]
IfS[i] == "D"
, thenA[i] > A[i+1]
Example 1:Input: "IDID" Output: [0,4,1,3,2]
Example 2:
Input: "III" Output: [0,1,2,3]
Example 3:
Input: "DDI" Output: [3,2,0,1]
Note:
1 <= S.length <= 10000
S
only contains characters"I"
or"D"
.
解釋:
注意,output的長度比input的長度多1。
python程式碼:
class Solution:
def diStringMatch(self, S):
"""
:type S: str
:rtype: List[int]
"""
init =list(range(len(S)+1))
result=[]
for s in S:
if s=='D':
result.append(init.pop())
else:
result.append(init.pop(0))
return result+init
c++程式碼:
#include<deque>
using namespace std;
class Solution {
public :
vector<int> diStringMatch(string S) {
deque<int> init;
for (int i=0;i<=S.size();i++)
init.push_back(i);
vector<int> result;
for (auto s:S)
{
if (s=='D')
{
result.push_back(init.back());
init.pop_back();
}
else
{
result.push_back(init.front());
init.pop_front();
}
}
result.push_back(init.back());
return result;
}
};
總結:
學會了使用stl中的deque。