From fc8857537ea36e2152a28dceadef41b2c95709d1 Mon Sep 17 00:00:00 2001 From: li-chx Date: Tue, 28 Jul 2026 17:25:58 +0800 Subject: [PATCH] =?UTF-8?q?3517.=20=E6=9C=80=E5=B0=8F=E5=9B=9E=E6=96=87?= =?UTF-8?q?=E6=8E=92=E5=88=97=20I?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main.rs b/src/main.rs index 4c04497..6e6cb60 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,32 +1,32 @@ -use std::collections::HashMap; - mod arr; struct Solution {} impl Solution { - pub fn array_rank_transform(mut arr: Vec) -> Vec { - if arr.len() == 0 { - return arr; + pub fn smallest_palindrome(s: String) -> String { + let mut arr = vec![0; 26]; + let mut s = s.chars().collect::>(); + for i in 0..s.len() / 2 { + arr[(s[i] as u8 - b'a') as usize] += 1; } - let mut sorted_arr = arr.clone(); - sorted_arr.sort_unstable(); - let mut mp = HashMap::with_capacity(arr.len()); - let mut sub = 0; - mp.insert(sorted_arr[0], 0); - for i in 1..sorted_arr.len() { - if sorted_arr[i] == sorted_arr[i-1] { - sub+=1; - continue; + let mut idx = 0; + for i in 0..26 { + while arr[i] > 0 { + s[idx] = (b'a' + i as u8) as char; + arr[i] -= 1; + idx += 1; } - mp.insert(sorted_arr[i], i as i32 - sub); } - println!("{:?}", mp); - for x in arr.iter_mut() { - *x = *mp.get(x).unwrap() + 1; + let mut rev_idx = idx; + if s.len() % 2 != 0{ + idx += 1; } - arr + while rev_idx > 0{ + rev_idx -= 1; + s[idx] = s[rev_idx]; + idx += 1; + } + s.into_iter().collect::() } } - fn main() { - println!("{:?}", Solution::array_rank_transform(vec![1,5,2,3,4,5])); + println!("{:?}", Solution::smallest_palindrome("bahaahab".to_string())); }