diff --git a/src/main.rs b/src/main.rs index 1b8f332..1ef779c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,31 +1,24 @@ -use std::collections::HashMap; - mod arr; struct Solution {} impl Solution { - pub fn distance(nums: Vec) -> Vec { - let mut ans = vec![0_i64; nums.len()]; - let mut map: HashMap> = HashMap::new(); - for (i, num) in nums.iter().enumerate() { - map.entry(*num).or_insert(vec![]).push(i); - } - for (_, v) in map.into_iter() { - let mut local_len = 0; - for i in 1..v.len() { - local_len += v[i] - v[0]; - } - ans[v[0]] = local_len as i64; - for i in 1..v.len() { - local_len = - local_len - (v[i] - v[i - 1]) * (v.len() - 1 - i) + (v[i] - v[i - 1]) * (i - 1); - ans[v[i]] = local_len as i64; + pub fn furthest_distance_from_origin(moves: String) -> i32 { + let mut mv = 0; + let mut dif = 0; + for c in moves.chars() { + match c { + 'L' => mv -= 1, + 'R' => mv += 1, + _ => dif += 1, } } - ans + if mv >= 0 { mv + dif } else { -mv + dif } } } fn main() { - println!("{:?}", Solution::distance(vec![1, 3, 1, 1, 2])); + println!( + "{:?}", + Solution::furthest_distance_from_origin("_R__LL_".into()) + ); }