Welcome to Subscribe On Youtube
942. DI String Match
Description
A permutation perm
of n + 1
integers of all the integers in the range [0, n]
can be represented as a string s
of length n
where:
s[i] == 'I'
ifperm[i] < perm[i + 1]
, ands[i] == 'D'
ifperm[i] > perm[i + 1]
.
Given a string s
, reconstruct the permutation perm
and return it. If there are multiple valid permutations perm, return any of them.
Example 1:
Input: s = "IDID" Output: [0,4,1,3,2]
Example 2:
Input: s = "III" Output: [0,1,2,3]
Example 3:
Input: s = "DDI" Output: [3,2,0,1]
Constraints:
1 <= s.length <= 105
s[i]
is either'I'
or'D'
.
Solutions
-
class Solution { public int[] diStringMatch(String s) { int n = s.length(); int low = 0, high = n; int[] ans = new int[n + 1]; for (int i = 0; i < n; i++) { if (s.charAt(i) == 'I') { ans[i] = low++; } else { ans[i] = high--; } } ans[n] = low; return ans; } }
-
class Solution { public: vector<int> diStringMatch(string s) { int n = s.size(); int low = 0, high = n; vector<int> ans(n + 1); for (int i = 0; i < n; ++i) { if (s[i] == 'I') { ans[i] = low++; } else { ans[i] = high--; } } ans[n] = low; return ans; } };
-
class Solution: def diStringMatch(self, s: str) -> List[int]: n = len(s) low, high = 0, n ans = [] for i in range(n): if s[i] == 'I': ans.append(low) low += 1 else: ans.append(high) high -= 1 ans.append(low) return ans
-
func diStringMatch(s string) []int { n := len(s) low, high := 0, n var ans []int for i := 0; i < n; i++ { if s[i] == 'I' { ans = append(ans, low) low++ } else { ans = append(ans, high) high-- } } ans = append(ans, low) return ans }
-
function diStringMatch(s: string): number[] { const n = s.length; const res = new Array(n + 1); let low = 0; let high = n; for (let i = 0; i < n; i++) { if (s[i] === 'I') { res[i] = low++; } else { res[i] = high--; } } res[n] = low; return res; }
-
impl Solution { pub fn di_string_match(s: String) -> Vec<i32> { let s = s.as_bytes(); let n = s.len(); let mut res = Vec::with_capacity(n + 1); let (mut low, mut high) = (-1, (n + 1) as i32); for i in 0..n { res.push( if s[i] == b'I' { low += 1; low } else { high -= 1; high } ); } res.push(low + 1); res } }