use std::collections::HashMap;
impl Solution { pub fn longest_str_chain(words: Vec<String>) -> i32 { let (mut ans, mut w) = (0, words); w.sort_by_key(|x| x.len()); let mut map = HashMap::new();
for word in w { if map.contains_key(&word) { continue; } map.insert(word.clone(), 1); for i in 0..word.len() { let mut c = word.clone(); c.remove(i); if map.contains_key(&c) && (*map.get(&c).unwrap() + 1 > *map.get(&word).unwrap()) { map.insert(word.clone(), map.get(&c).unwrap() + 1); } } ans = std::cmp::max(ans, *map.get(&word).unwrap()); } return ans; } }
|