题目:

给定一个正整数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百度研发真题及其解析-求比指定数大且最小的“不重复数”相关推荐

  1. 2014百度面试题目---“求比指定整数大且最小的不重复数”解答

    题目:给定任意一个正整数,求比这个数大且最小的"不重复数","不重复数"的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数. 代码: #incl ...

  2. 2014年数学二真题手稿解析

    2014年数学二真题手稿解析 (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) ...

  3. 2022年(上半年)信息系统项目管理师考试-综合知识真题及解析(二)

    2022年(上半年)信息系统项目管理师考试-综合知识真题及解析(二) 21.组建项目团队,建设项目团队和管理项目团队,是( )的过程. A.启动过程组 B.计划与编制过程组 C.执行过程组 D.监督与 ...

  4. DayDayUp:计算机技术与软件专业技术资格证书之《系统集成项目管理工程师》证书考试历年真题及其解析之2017年/2018年

    DayDayUp:计算机技术与软件专业技术资格证书之<系统集成项目管理工程师>证书考试历年真题及其解析之2017年/2018年 目录 2017年 2017年11月上午<系统集成项目管 ...

  5. 2020历年真题全解析【数学一】-汤家凤【上册(1987-1999年)】

    2020历年真题全解析[数学一]-汤家凤[上册(1987-1999年)] 链接: https://pan.baidu.com/s/1hDKB8s-t7rF3TSpdh0N7rA 提取码: 9anh 复 ...

  6. 问题 1819: [蓝桥杯][2014年第五届真题]Log大侠

    问题 1819: [蓝桥杯][2014年第五届真题]Log大侠 时间限制: 1Sec 内存限制: 128MB 提交: 236 解决: 173 题目描述  atm参加了速算训练班,经过刻苦修炼,对以2为 ...

  7. 蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:7.八次求和

    不要自卑,去提升实力 互联网行业谁技术牛谁是爹 如果文章可以带给你能量,那是最好的事!请相信自己 加油o~ 点击下面链接 蓝桥杯历届真题题目+解析+代码+答案(2013-2020)(JavaA.B.C ...

  8. 【2014武汉GIS真题首发】2014武汉大学地图学与地理信息系统考研真题(GIS520论坛首发)

    [2014武汉GIS真题首发]2014武汉大学攻读研究生入学考试试题 专业:地图学与地理信息系统   满分:150分 GIS520论坛首发真题,转载请注明出处!www.gis520.com 一.名词解 ...

  9. js解析二维码_最新最全阿里巴巴,今日头条,腾讯Flutter面试真题全解析(狂虐不止)...

    阿里巴巴,今日头条,腾讯Flutter面试真题全解析.你只有去过大厂,才知道大厂的面试有多难,这个难度不是你能够想象得到的.所以说如果想去做这方面的工作,建议把以下内容好好准备一下(其实也就是多看一些 ...

最新文章

  1. BS-GX-017基于SSM实现的在线考试管理系统
  2. 看人装X,我就来气,开启极限装X模式
  3. 【Android 应用开发】Android - 时间 日期相关组件
  4. JavaWeb学习总结(十三)——使用Session防止表单重复提交
  5. Linux下运行纯dos软件,在linux下运行dos软件(转)
  6. MyBatis mapper 注解过程中通过 LanguageDriver 实现动态 SQL
  7. MYSQ 查看 2 进制日志
  8. 买卖股票类问题动态规划解法(Leetcode题解-Python语言)
  9. element手机验证格式_vue封装 element-ui form表单验证 正则匹配手机号 自定义校验表格内容...
  10. [css] 行内元素可以设置padding和margin吗?
  11. Python列出文件夹下某类文件名的方法
  12. 吴恩达机器学习【第三天】线性代数基础知识
  13. stm32 GPIO
  14. 有哪些问题应该得到解决?
  15. Android View框架总结(四)View布局流程之Measure
  16. 安卓源码下载的环境搭建
  17. iOS 强制屏幕实现旋转功能
  18. 将QQ音乐下载的 tkm 格式的音乐文件如何免费转换成 MP3 格式
  19. uniapp选择所有城市通过索引方式(源码自带所有城市json格式数据)
  20. Kong 优雅实现微服务网关鉴权,登录场景落地实战篇

热门文章

  1. admininfo.php,admin.php 源代码在线查看 - FTB安装版 v1.3(虚拟形象)FTB安装版 v1.3(虚拟形象) 资源下载 虫虫电子下载站...
  2. ossweb上传 php_php - ftp 上传文件到远程服务器
  3. 中盐总公司:盐业公司24小时配送保供应
  4. LOJ 3094 「BJOI2019」删数——角标偏移的线段树
  5. [ CCO 2015 ] Artskjid
  6. 二叉搜索树中第K小的元素
  7. iOS获取webView的内容或修改网页上的内容
  8. 翻译:MariaDB DATABASE()
  9. Asp.Net 之 通过调用 WScript.Shell 启动本地 exe 程序时产生“ automation服务器不能创建对象 ”的错误...
  10. Windows多线程编程总结