2014百度研发真题及其解析-求比指定数大且最小的“不重复数”
题目:
给定一个正整数n,求比n大的第一个“不重复数”。”不重复数“的定义:如果一个数,任何相邻两个数位上的数字都不相同,则称为不重复数。例如1234是不重复数,而1101不是。
思路一:暴力
数值加一,判断是否是重复数,如果是,继续加一判断,直到找到一个不是重复数的。
#include <iostream>#include <cstring>#include <vector>#include <algorithm>using namespace std;class Solution{public:int MinNoRepetition(int n){// 加一 判断是否是最小不重复数while(isRepetition(n)){++n;}//whilereturn n;}private:// 判断相邻字符是否重复bool isRepetition(int n){string str = to_string(n);int size = str.size();for (int i = 0;i < size;++i) {if(i > 0 && str[i] == str[i-1]){return true;}//if}//forreturn false;}//};int main(){Solution s;int result = s.MinNoRepetition(19900);cout<<result<<endl;return 0;}
思路二:
经过分析得到:
只要找到最高重复位即可破题 如1123455 最高重复位为11则改为12其他填充01结果就是1201010 所以从最高位开始截 找到重复的2位,低位+1,然后填充01。
但有一种情况例外 就是99重复 这时候需要进位+1,反向判断 。如2199,则进位+1变为2200,反向判断22重复变为2300,然后填充01变为2301。最惨的就是8989899这种,最后99重复,进位变为8989900,反向判断99重复,进位变为8990000,继续反向判断99重复,进位变为9000000,反向判断通过,填充01变为9010101,结果就是8989899->9010101。
#include <iostream>#include <cstring>#include <vector>#include <algorithm>using namespace std;class Solution{public:int MinNoRepetition(int n){string str = to_string(n);int size = str.size();int result = 0;// 开始填充01的位置int pos = size;for (int i = 0;i < size;) {// 情况:99if(i > 0 && str[i] == '9' && str[i-1] == '9'){str[i--] = '0';str[i--] = '0';// 99前一位加一if(i >= 0){str[i--] += 1;}//ifelse{result = 1;}//else}//if//情况:44else if(i > 0 && str[i] == str[i-1]){str[i] += 1;pos = i + 1;break;}//elseelse{++i;}}//for// 前面不重复的for(int i = 0;i < pos;++i){result = result * 10 + str[i] - '0';}//for// 添加的01个数int count = size - pos;for(int i = 1;i <= count;++i){// 添加0if(i % 2){result = result * 10;}//if// 添加1else{result =result * 10 + 1;}//else}//forreturn result;}};int main(){Solution s;int result = s.MinNoRepetition(99);cout<<result<<endl;return 0;}
2014百度研发真题及其解析-求比指定数大且最小的“不重复数”相关推荐
- 2014百度面试题目---“求比指定整数大且最小的不重复数”解答
题目:给定任意一个正整数,求比这个数大且最小的"不重复数","不重复数"的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数. 代码: #incl ...
- 2014年数学二真题手稿解析
2014年数学二真题手稿解析 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) ...
- 2022年(上半年)信息系统项目管理师考试-综合知识真题及解析(二)
2022年(上半年)信息系统项目管理师考试-综合知识真题及解析(二) 21.组建项目团队,建设项目团队和管理项目团队,是( )的过程. A.启动过程组 B.计划与编制过程组 C.执行过程组 D.监督与 ...
- DayDayUp:计算机技术与软件专业技术资格证书之《系统集成项目管理工程师》证书考试历年真题及其解析之2017年/2018年
DayDayUp:计算机技术与软件专业技术资格证书之<系统集成项目管理工程师>证书考试历年真题及其解析之2017年/2018年 目录 2017年 2017年11月上午<系统集成项目管 ...
- 2020历年真题全解析【数学一】-汤家凤【上册(1987-1999年)】
2020历年真题全解析[数学一]-汤家凤[上册(1987-1999年)] 链接: https://pan.baidu.com/s/1hDKB8s-t7rF3TSpdh0N7rA 提取码: 9anh 复 ...
- 问题 1819: [蓝桥杯][2014年第五届真题]Log大侠
问题 1819: [蓝桥杯][2014年第五届真题]Log大侠 时间限制: 1Sec 内存限制: 128MB 提交: 236 解决: 173 题目描述 atm参加了速算训练班,经过刻苦修炼,对以2为 ...
- 蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:7.八次求和
不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 点击下面链接 蓝桥杯历届真题题目+解析+代码+答案(2013-2020)(JavaA.B.C ...
- 【2014武汉GIS真题首发】2014武汉大学地图学与地理信息系统考研真题(GIS520论坛首发)
[2014武汉GIS真题首发]2014武汉大学攻读研究生入学考试试题 专业:地图学与地理信息系统 满分:150分 GIS520论坛首发真题,转载请注明出处!www.gis520.com 一.名词解 ...
- js解析二维码_最新最全阿里巴巴,今日头条,腾讯Flutter面试真题全解析(狂虐不止)...
阿里巴巴,今日头条,腾讯Flutter面试真题全解析.你只有去过大厂,才知道大厂的面试有多难,这个难度不是你能够想象得到的.所以说如果想去做这方面的工作,建议把以下内容好好准备一下(其实也就是多看一些 ...
最新文章
- BS-GX-017基于SSM实现的在线考试管理系统
- 看人装X,我就来气,开启极限装X模式
- 【Android 应用开发】Android - 时间 日期相关组件
- JavaWeb学习总结(十三)——使用Session防止表单重复提交
- Linux下运行纯dos软件,在linux下运行dos软件(转)
- MyBatis mapper 注解过程中通过 LanguageDriver 实现动态 SQL
- MYSQ 查看 2 进制日志
- 买卖股票类问题动态规划解法(Leetcode题解-Python语言)
- element手机验证格式_vue封装 element-ui form表单验证 正则匹配手机号 自定义校验表格内容...
- [css] 行内元素可以设置padding和margin吗?
- Python列出文件夹下某类文件名的方法
- 吴恩达机器学习【第三天】线性代数基础知识
- stm32 GPIO
- 有哪些问题应该得到解决?
- Android View框架总结(四)View布局流程之Measure
- 安卓源码下载的环境搭建
- iOS 强制屏幕实现旋转功能
- 将QQ音乐下载的 tkm 格式的音乐文件如何免费转换成 MP3 格式
- uniapp选择所有城市通过索引方式(源码自带所有城市json格式数据)
- Kong 优雅实现微服务网关鉴权,登录场景落地实战篇
热门文章
- admininfo.php,admin.php 源代码在线查看 - FTB安装版 v1.3(虚拟形象)FTB安装版 v1.3(虚拟形象) 资源下载 虫虫电子下载站...
- ossweb上传 php_php - ftp 上传文件到远程服务器
- 中盐总公司:盐业公司24小时配送保供应
- LOJ 3094 「BJOI2019」删数——角标偏移的线段树
- [ CCO 2015 ] Artskjid
- 二叉搜索树中第K小的元素
- iOS获取webView的内容或修改网页上的内容
- 翻译:MariaDB DATABASE()
- Asp.Net 之 通过调用 WScript.Shell 启动本地 exe 程序时产生“ automation服务器不能创建对象 ”的错误...
- Windows多线程编程总结