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' if perm[i] < perm[i + 1], and s[i] == 'D' if perm[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'.
Solution
class Solution {
    /**
     * @param String $s
     * @return Integer[]
     */
    function diStringMatch($s) {
        
        if( strlen($s) < 1 || strlen($s) > pow(10,5) ) return [];
        $I = 0;
        $D = strlen($s);
        $perm = [];
        
        for( $i = 0; $i < strlen($s); $i++ ) {
            
            $perm[] = $s[$i] == 'I' ? $I++ : $D--;
        }
        
        $perm[] = $s[strlen($s)-1] == "I" ? $I++ : $D--;
        return $perm;
    }
}
		
		
			
5,796 thoughts on “DI String Match”