From 495075eef2c44b0385fa5abe9e22953cfba3675e Mon Sep 17 00:00:00 2001 From: li_chx Date: Wed, 25 Feb 2026 15:35:37 +0800 Subject: [PATCH] =?UTF-8?q?1356.=20=E6=A0=B9=E6=8D=AE=E6=95=B0=E5=AD=97?= =?UTF-8?q?=E4=BA=8C=E8=BF=9B=E5=88=B6=E4=B8=8B=201=20=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E7=9B=AE=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 40 +++++++++++++++------------------------- 1 file changed, 15 insertions(+), 25 deletions(-) diff --git a/src/main.rs b/src/main.rs index fc096e9..129f0f3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,36 +1,26 @@ +use std::cmp::Ordering; + struct Solution; mod arr; impl Solution { - pub fn sp(s : &str)-> String{ - if s.len() <= 2 { - return s.to_string(); - } - let mut left = 0; - let mut cnt = 0; - let sb = s.as_bytes(); - let mut arr = Vec::new(); - for i in 0..s.len() { - if sb[i] == b'1' { - cnt += 1; - }else { - cnt -= 1; + pub fn sort_by_bits(arr: Vec) -> Vec { + let mut arr= arr.iter().map(|&x| ->(i32,i32){ + (x,x.count_ones() as i32) + }).collect::>(); + arr.sort_unstable_by(|a,b|-> Ordering { + let res = a.1.cmp(&b.1); + match res { + Ordering::Equal => a.0.cmp(&b.0), + _ => res, } - if cnt == 0 { - arr.push(format!("1{}0",Self::sp(&s[left + 1 .. i]))); - left = i + 1; - } - } - arr.sort_unstable_by(|a,b| b.cmp(a)); - arr.join("") - } - pub fn make_largest_special(s: String) -> String { - Self::sp(s.as_str()) + }); + arr.iter().map(|&(x,_)| x).collect() } } fn main() { - let result = Solution::make_largest_special( - "101101101010101010001010101010110011011010001100".to_string(), + let result = Solution::sort_by_bits( + vec![0,1,2,3,4,5,6,7,8] ); println!("{:?}", result); } \ No newline at end of file