Сложность: medium
Дана строка s, содержащая неупорядоченное английское представление цифр от 0 до 9, верните цифры в порядке возрастания.
Пример:
Input: s = "owoztneoer"
Output: "012"
👨💻 Алгоритм:
1⃣Подсчитайте количество каждого символа в строке s с помощью хэш-таблицы или массива, чтобы определить количество каждого символа.
2⃣Используйте уникальные символы, присутствующие только в одном числе (например, 'z' для 0, 'w' для 2, 'u' для 4, 'x' для 6, 'g' для 8), чтобы определить количество этих цифр в строке. Затем определите количество остальных цифр, вычитая уже найденные цифры.
3⃣Соберите найденные цифры в строку в порядке возрастания и верните результат.
😎 Решение:
class Solution {
function originalDigits($s) {
$count = array_fill(0, 26, 0);
foreach (str_split($s) as $letter) {
$count[ord($letter) - ord('a')]++;
}
$out = array_fill(0, 10, 0);
$out[0] = $count[ord('z') - ord('a')];
$out[2] = $count[ord('w') - ord('a')];
$out[4] = $count[ord('u') - ord('a')];
$out[6] = $count[ord('x') - ord('a')];
$out[8] = $count[ord('g') - ord('a')];
$out[3] = $count[ord('h') - ord('a')] - $out[8];
$out[5] = $count[ord('f') - ord('a')] - $out[4];
$out[7] = $count[ord('s') - ord('a')] - $out[6];
$out[9] = $count[ord('i') - ord('a')] - $out[5] - $out[6] - $out[8];
$out[1] = $count[ord('n') - ord('a')] - $out[7] - 2 * $out[9];
$output = '';
for ($i = 0; $i < 10; $i++) {
for ($j = 0; $j < $out[$i]; $j++) {
$output .= $i;
}
}
return $output;
}
}Ставь 👍 и забирай 📚 Базу знаний