内容简介:当一个数字180度旋转后,不等于原来的数字,那么我们称它是一个好数字。例如,数字0、1和8在旋转180度后,等于它本身。2和5旋转后为对方。6和9也是如此。而其他数字在旋转后不等于任何数字。
D71 788. Rotated Digits
题目链接
题目分析
当一个数字180度旋转后,不等于原来的数字,那么我们称它是一个好数字。
例如,数字0、1和8在旋转180度后,等于它本身。2和5旋转后为对方。6和9也是如此。而其他数字在旋转后不等于任何数字。
给定一个数字,返回从1到这个数字之间有多少个好数字。
思路
用range函数生成1到给定数组之间的所有数组。
用array_filter函数对每一个数字进行一个操作。
对每一个数字,用str_split和array_count_values函数处理。
当包含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); } }
若觉得本文章对你有用,欢迎用 爱发电 资助。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Unity 3D脚本编程
陈嘉栋 / 电子工业出版社 / 2016-9-1 / 79
《Unity 3D脚本编程——使用C#语言开发跨平台游戏》以Unity 3D 的跨平台基础Mono,以及其游戏脚本语言C#为基础进行讲解。全面系统地剖析了Unity 3D 的跨平台原理以及游戏脚本开发的特点。 第1 章主要介绍了Unity 3D 引擎的历史以及编辑器的基本知识;第2 章主要介绍了Mono,以及Unity3D 利用Mono 实现跨平台的原理,并且分析了C#语言为什么更适合Uni......一起来看看 《Unity 3D脚本编程》 这本书的介绍吧!