From 4460a2f0280c233e261d6016920d4ebc6173fec5 Mon Sep 17 00:00:00 2001 From: li_chx Date: Fri, 24 Apr 2026 08:50:07 +0800 Subject: [PATCH] =?UTF-8?q?2833.=20=E8=B7=9D=E7=A6=BB=E5=8E=9F=E7=82=B9?= =?UTF-8?q?=E6=9C=80=E8=BF=9C=E7=9A=84=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) 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()) + ); }