Рубрики
Uncategorized

Решение для PHP с кодом Leetcode — D71 788. Повернутые цифры

Автор оригинала: David Wong.

Ссылка на Заголовок

788. Повернутые Цифры

Анализ названия

Когда число поворачивается на 180 градусов, оно не равно исходному числу, поэтому мы называем его хорошим числом.

Например, числа 0, 1 и 8 равны сами себе при повороте на 180 градусов. 2 и 5 вращаются друг для друга. Так же, как 6 и 9. Другие числа не равны никакому числу после поворота.

Заданное число возвращает, сколько хороших чисел находится между 1 и этим числом.

размышляющий

Используйте функцию диапазона для создания всех массивов от 1 до заданного массива.

Использовать массив? Функция фильтрации для выполнения операции над каждым номером.

Для каждого числа-звезды? Разделить и объединить? Считать? Используются функции значений.

Когда включены 3, 4 или 7, это не очень хорошее число, потому что поворот на 180 градусов не равен никакому числу. Поэтому верните значение false напрямую, чтобы исключить текущее число.

Для числа 2 преобразуйте в 5. Сделайте то же самое для вращающихся чисел.

Определите, равно ли число после поворота исходному числу. В противном случае верните значение true, чтобы сохранить текущее число как хорошее. В противном случае верните значение false, чтобы исключить текущее число.

Используйте функцию count, чтобы вернуть количество хороших чисел.

Окончательный код

php
class Solution {

    /**
     * @param Integer $N
     * @return Integer
     */
    function rotatedDigits($N) {
        $all = range(1,$N);
        $good = array_filter($all, function($val){
            $vs = str_split($val);
            $cnt = array_count_values($vs);
            if(isset($cnt[3]) || isset($cnt[4]) || isset($cnt[7])){
                return false;
            }
            $newvs = array_map(function($va){
                switch($va){
                    case 2: return 5;
                    case 5: return 2;
                    case 6: return 9;
                    case 9: return 6;
                    default:
                        return $va;
                }
            },$vs);
            return intval(implode($newvs)) != $val;
        });
        return count($good);
    }
}

Если вы считаете, что эта статья полезна для вас, вы можете воспользоваться поддержкой генерации энергии ИИ.