Skip to content

Commit

Permalink
Added sort jumbled numbers solution.
Browse files Browse the repository at this point in the history
  • Loading branch information
jusexton committed Jul 24, 2024
1 parent db5edfa commit 9fe38b0
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 0 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ other languages.
- Rotate Array (https://leetcode.com/problems/rotate-array/)
- Sort Colors (https://leetcode.com/problems/sort-colors)
- Rotate Digits (https://leetcode.com/problems/rotated-digits)
- Sort Jumbled Numbers (https://leetcode.com/problems/sort-the-jumbled-numbers)

### Other

Expand Down
1 change: 1 addition & 0 deletions src/leetcode/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,4 @@ mod remove_duplicates;
mod sort_people;
mod max_repeating_substr;
mod freq_sort;
mod sort_jumbled_numbers;
40 changes: 40 additions & 0 deletions src/leetcode/sort_jumbled_numbers.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
use std::collections::HashMap;

pub fn sort_jumbled(mapping: Vec<i32>, mut numbers: Vec<i32>) -> Vec<i32> {
let mut m = HashMap::with_capacity(numbers.len());
for (index, number) in numbers.iter().enumerate() {
let mapped = map_number(*number, &mapping);
m.insert(*number, (mapped, index));
}

numbers.sort_by_key(|number| m.get(number));
numbers
}

fn map_number(mut number: i32, mapping: &[i32]) -> i32 {
if number == 0 {
return mapping[0];
}

let mut mapped = 0;
let mut place = 0;
while number > 0 {
mapped += mapping[number as usize % 10] * 10_i32.pow(place);
number /= 10;
place += 1;
}
mapped
}

#[cfg(test)]
mod tests {
use super::sort_jumbled;

#[test]
fn jumped_numbers_are_sorted() {
let mapping = vec![9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
let numbers = vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
let actual = sort_jumbled(mapping, numbers);
assert_eq!(vec![9, 8, 7, 6, 5, 4, 3, 2, 1, 0], actual)
}
}

0 comments on commit 9fe38b0

Please sign in to comment.