【LeetCode】1056-易混淆数
易混淆数
给定一个数字 N,当它满足以下条件的时候返回 true:把原数字旋转180°以后得到新的数字。如 0, 1, 6, 8, 9 旋转 180° 以后,得到了新的数字 0, 1, 9, 8, 6 。2, 3, 4, 5, 7 旋转 180° 后,得到的不是数字。易混淆数字 (confusing number) 就是一个数字旋转180°以后,得到和原来不同的数字,且新数字的每一位都是有效的。
示例 1:
输入:89
输出:true
解释:
把 89 旋转 180° 以后得到 68,68 是有效数字且 68!=89 。
示例 2:
输入:25
输出:false
解释:
把 25 旋转 180° 以后得到的不是数字。
分析
1. 已知0, 1, 6, 8, 9 旋转 180° 以后,得到新的数字 0, 1, 9, 8, 6。 那么给定一个整数,我可以先分析它里面每位数字旋转情况。如619,将每位数字用旋转后新的数字代替就成了916,但是按整体来旋转180°应该是619,所以我们还需要将916反转。通过分析,如果采用java来实现的话,可以先将整数N转化成字符串str,用hashmap来存储0, 1, 6, 8, 9以及它们对应旋转之后的值,在这里我们还需要创建一个StringBuilder对象tmp来接收旋转后的值并将它们组合成字符串,从字符串str中依次取出每位数字放在hashmap中寻找,如果找到了就将结果连接到tmp中(至于旋转之后不是数字的情况我将在后面讨论),直到遍历完str,我们就得到了每位数字原地旋转的情况,接着用StringBuilder类中的reverse方法可以将字符串反转,用toString方法将其转化成String类再做相应判断。部分代码如下:
String str = Integer.toString(N);
Map<Character, Character> map=new HashMap<>();
map.put('0','0');
map.put('1','1');
map.put('6','9');
map.put('8','8');
map.put('9','6');
StringBuilder tmp =new StringBuilder();
for(int i = 0; i < str.length(); i++){
tmp.append(map.get(str.charAt(i)));
}
2. 2,3, 4, 5, 7 旋转 180° 后,得到的不是数字。 很显然,如果给定的整数N中存在这些数,那么N一定不是易混淆数,直接返回false。部分代码如下:
char[] ch = {'2','3','4','5','7'};
for(char c : ch){
if(str.indexOf(c) != -1)
return false;
}
3. 易淆数字 (confusing number) 就是一个数字旋转180°以后,得到和原来不同的数字,且新数字的每一位都是有效的。 这里说明整数N旋转180°以后不能仍为N, 如我在1中提到的619,旋转之后仍为619,那么它并不是易混淆数。部分代码如下:
if(tmp.reverse().toString().equals(str))
return false;
else
return true;
总结
对于这个问题,如果我们从整体考虑的话有点无从下手,所以采取化整为零,再化零为整的策略就容易的多,下面附上全部的代码:
public static boolean confusingNumber(int N) {
String str = Integer.toString(N);
char[] ch = {'2','3','4','5','7'};
for(char c : ch){
if(str.indexOf(c) != -1)
return false;
}
Map<Character, Character> map=new HashMap<>();
map.put('0','0');
map.put('1','1');
map.put('6','9');
map.put('8','8');
map.put('9','6');
StringBuilder tmp =new StringBuilder();
for(int i = 0; i < str.length(); i++){
tmp.append(map.get(str.charAt(i)));
}
if(tmp.reverse().toString().equals(str))
return false;
else
return true;
}
【LeetCode】1056-易混淆数的更多相关文章
- [Swift-2019力扣杯春季初赛]1. 易混淆数
给定一个数字 N,当它满足以下条件的时候返回 true: 把原数字旋转180°以后得到新的数字. 如 0, 1, 6, 8, 9 旋转 180° 以后,得到了新的数字 0, 1, 9, 8, 6 . ...
- C#中一些易混淆概念总结
C#中一些易混淆概念 这几天一直在复习C#基础知识,过程中也发现了自己以前理解不清楚和混淆的概念.现在给大家分享出来我的笔记: 一,.NET平台的重要组成部分都是有哪些 1)FCL (所谓的.NET框 ...
- 【C#小知识】C#中一些易混淆概念总结(五)---------继承 分类: C# 2014-02-06 22:05 1106人阅读 评论(0) 收藏
目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...
- 【C#小知识】C#中一些易混淆概念总结(五)---------深入解析C#继承
目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 [C#小知识]C#中一些易混淆概念总结(二)--------构造函数,this关键字 ...
- 【C#小知识】C#中一些易混淆概念总结---------数据类型存储,方法调用,out和ref参数的使用
这几天一直在复习C#基础知识,过程中也发现了自己以前理解不清楚和混淆的概念.现在给大家分享出来我的笔记: 一,.NET平台的重要组成部分都是有哪些 1)FCL (所谓的.NET框架类库) 这些类是微软 ...
- css常见的易混淆属性和值的区别(一)
css的属性很多,每一个属性的值也很多,组合起来便有成千上万种.不同属性之间的相互组合也可以产生不同的样式,css真是一种优美的样式设计语言.下面对工作中常见的易混淆的属性和值进行总结: 1. lin ...
- C#中易混淆的知识点
C#中易混淆的知识点 一.引言 今天在论坛中看到一位朋友提出这样的一个问题,问题大致(问题的链接为:http://social.msdn.microsoft.com/Forums/zh-CN/52e6 ...
- a链接易混淆与form表单简易验证用法详解
链接可以说遍布互联网,比如你想提供一个可以跳转到百度首页的链接给网友,那么代码如下: <a href="http://www.baidu.com">百度一下,你就知道& ...
- lua中易混淆函数
lua中易混淆的函数 ipairs和pairs: ipairs只能顺序遍历table,遇到key不是数字就会退出 pairs可以遍历table中所有元素 ----------------------- ...
随机推荐
- json对象中的变量存在空格的取值办法
写一个json对象,但需求需要是带空格的键,定义的话很容易定义,只需要双引号引起来即可,但取值的时候怎么取,直接写 会报错,所以就有了下边的办法 <el-form-item label=&quo ...
- 微信小程序跳转传参参数丢失?
垂死病中惊坐起,笑问 Bug 何处来?! 1.先是大写字母作祟 前两天发布了「柒留言」v2.0.0 新版本,结果...你懂的嘛,没有 Bug 的程序不是好程序,写不出 Bug 的程序员不是好程序员. ...
- 《目标:OKR与KPI漫谈》
一.为什么要写这个 写这个题目其实是很偶然的,因为到年中了,公司的同事和领导都要看一下上半年的OKR的完成情况,同时也要制定下下半年的OKR,突然想到了之前在天津的公司时,大家说的是KPI,现在说的是 ...
- MySQL的事务隔离
提到事务,你肯定会想到ACID(Atomicity.Consistency.Isolation.Durability,即原子性.一致性.隔离性.持久性),今天我们就来说说其中I,也就是“隔离性”. 数 ...
- Spring Cloud 如何搭建eureka
Eureka Server 的搭建 eureka 是 Spring Cloud 的注册中心,提供服务注册和服务发现的功能. 利用idea 快速创建一个eureka应用File - NewProject ...
- Socket抽象层
目录 一.Socket抽象层 一.Socket抽象层 我们知道两个进程如果需要进行通讯最基本的一个前提是能够唯一标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一 ...
- php foreach 的效率问题
结果: 结论:多数情况下,循环时不带$k的foreach执行速度较快,建议没有使用到$k时,尽量不写
- Centos7 下cobbler安装及配置
1.背景介绍 作为运维,在公司经常遇到一些机械性重复工作要做,例如:为新机器装系统,一台两台机器装系统,可以用光盘.U盘等介质安装,1小时也完成了,但是如果有成百台的服务器还要用光盘.U盘去安装,就显 ...
- PHP 7.4.0 发布
近日,PHP 7.4.0 发布了,此版本标志着 PHP 7 系列的第四次特性更新. PHP 7.4.0 进行了许多改进,并带来了一些新特性,包括: Typed Properties 类型属性 类属性 ...
- IT兄弟连 HTML5教程 HTML5和CSS3的关系
HTML5是第五版HTML的标准,CSS3则是第三版CSS,新增一些非常实用的选择器和样式属性,并且CSS3语言开发是朝着模块化发展的.以前的规范作为一个模块实在是太庞大而且比较复杂,所以,把它分解为 ...