942. 增减字符串匹配
这一题初看题目能想到一个简单地办法就是,不管如何我都用0开始构造,遇到I的时候减,遇到D的时候当前以及往前都加,细想一下,会到最坏n方的情况。
然后再去看题目,其实有一个很简单的规律:
当_s_[_i_]=_I_ 时,使用当前最小值进行构造,当 _s_[_i_]=_D_ 时使用当前最大值进行构造,数学归纳法可以证明:
/// 942. 增减字符串匹配pub fn di_string_match(s: String) -> Vec<i32> {let mut ret = vec![0; s.len() + 1];let (mut l, mut r) = (0, s.len() as i32);s.chars().enumerate().for_each(|(i, b)| {if b == 'I' {ret[i] = l;l += 1} else {ret[i] = r;r -= 1}});ret[s.len()] = l;ret}
