#423
Medium Algorithms Reconstruct original digits from english
Hash Table Math String
52.7% acceptance
Jan 13, 2026
892
2805
Given a string s containing an out-of-order English representation of digits 0-9, return the digits in ascending order.
Solution
Rust
Time O(n²)
Space O(1)
impl Solution {
pub fn original_digits(s: String) -> String {
let mut counts = [0; 26];
for ch in s.bytes() {
counts[(ch - b'a') as usize] += 1;
}
let mut digits = [0; 10];
digits[0] = counts[(b'z' - b'a') as usize];
digits[2] = counts[(b'w' - b'a') as usize];
digits[4] = counts[(b'u' - b'a') as usize];
digits[6] = counts[(b'x' - b'a') as usize];
digits[8] = counts[(b'g' - b'a') as usize];
digits[3] = counts[(b'h' - b'a') as usize] - digits[8];
digits[5] = counts[(b'f' - b'a') as usize] - digits[4];
digits[7] = counts[(b's' - b'a') as usize] - digits[6];
digits[9] = counts[(b'i' - b'a') as usize] - digits[5] - digits[6] - digits[8];
digits[1] = counts[(b'n' - b'a') as usize] - digits[7] - 2 * digits[9];
let mut result = String::new();
for i in 0..10 {
for _ in 0..digits[i] {
result.push((b'0' + i as u8) as char);
}
}
result
}
}