class Solution {
public:
vector<int> diStringMatch(string s) {
}
};
942. 增减字符串匹配
由范围 [0,n]
内所有整数组成的 n + 1
个整数的排列序列可以表示为长度为 n
的字符串 s
,其中:
perm[i] < perm[i + 1]
,那么 s[i] == 'I'
perm[i] > perm[i + 1]
,那么 s[i] == 'D'
给定一个字符串 s
,重构排列 perm
并返回它。如果有多个有效排列perm,则返回其中 任何一个 。
示例 1:
输入:s = "IDID" 输出:[0,4,1,3,2]
示例 2:
输入:s = "III" 输出:[0,1,2,3]
示例 3:
输入:s = "DDI" 输出:[3,2,0,1]
提示:
1 <= s.length <= 105
s
只包含字符 "I"
或 "D"
原站题解
golang 解法, 执行用时: 8 ms, 内存消耗: 6.2 MB, 提交时间: 2020-11-04 22:58:30
func diStringMatch(S string) []int { left, right := 0, len(S) var rs []int for _, c := range S { if c == 'I' { rs = append(rs, left) left++ } else { rs = append(rs, right) right-- } } return append(rs, left) }
python3 解法, 执行用时: 72 ms, 内存消耗: 14.5 MB, 提交时间: 2020-11-04 22:48:37
class Solution: def diStringMatch(self, S: str) -> List[int]: left, right = 0, len(S) rs = [] for c in S: if c == 'I': rs.append(left) left += 1 else: rs.append(right) right -= 1 rs.append(right) return rs