<Interview Problem>最小的“不重复数”
百度的一道笔试题目,看到博客园讨论挺热烈的,也写一下玩玩。
实现思想:举个简单的例子11233,从高位到低位开始判断是否有重复数,高位有重复数后,首先修改高位的,高位修改后变为12233,因为要求最小的不
重复数,这时实际上要求的是12000这个数的最小不重复数了。在举个例子98989899,它的变化系列可是是这样:
98989900
98990000
99000000
100000000
101000000
101010000
101010100
101010101
1、给定任意一个正整数,求比这个数大且最小的“不重复数”,“不重复数”的含义是相邻两位不相同,例如1101是重复数,而1201是不重复数。
#include <iostream>
#include <stdio.h>
#include <stdlib.h> using namespace std; int test(int n){
char str[];
sprintf(str,"%d",n);
int len = strlen(str);
int cur = ;
int next = ;
if(len < )
return -;
for(int i = ; i < len; i++)
{
cur = i;
next = i+;
if(str[cur] == str[next]){
int result = len - (i+);
return result;
}
if(next == len)
break;
}
return -;
}
int find(int n)
{
int pos = test(n);
if(pos == -)
return n;
else{
int step = ;
for(int i = ; i < pos; i++)
step *= ;
cout << n/step*step+step <<endl;
find(n/step*step+step);
}
} int main(){ int n = ;
cout << test() << ": " << find() << endl;
cout << test() << ": " << find () << endl;
cout << test() <<": " << find() << endl;
cout << test() << ": " << find() << endl;
cout << "1099012: "<<find()<<endl;
cout << "11234: "<<find()<<endl;
cout << "98989899: "<<find()<<endl;
cout << "10989899: "<<find()<<endl;
return ; }
测试结果如下:
-1: 12345
4: 12010
1: 12
1: 201
1099012: 1201010
11234: 12010
98989899: 101010101
10989899: 12010101
<Interview Problem>最小的“不重复数”的更多相关文章
- hdu String Problem(最小表示法入门题)
hdu 3374 String Problem 最小表示法 view code#include <iostream> #include <cstdio> #include &l ...
- 评playerc网友的"求比指定数大且最小的“不重复数”问题"
问题见:对Alexia(minmin)网友代码的评论及对“求比指定数大且最小的‘不重复数’问题”代码的改进 .算法:求比指定数大且最小的“不重复数”问题的高效实现 . playerc网友的代码如下(求 ...
- 对Alexia(minmin)网友代码的评论及对“求比指定数大且最小的‘不重复数’问题”代码的改进
应Alexia(minmin)网友之邀,到她的博客上看了一下她的关于“求比指定数大且最小的‘不重复数’问题”的代码(百度2014研发类校园招聘笔试题解答),并在评论中粗略地发表了点意见. 由于感觉有些 ...
- 【BZOJ-3218】a+b Problem 最小割 + 可持久化线段树
3218: a + b Problem Time Limit: 20 Sec Memory Limit: 40 MBSubmit: 1320 Solved: 498[Submit][Status] ...
- HDU3374 String Problem —— 最小最大表示法 + 循环节
题目链接:https://vjudge.net/problem/HDU-3374 String Problem Time Limit: 2000/1000 MS (Java/Others) Me ...
- HDU-3374-String Problem(最小表示法, KMP)
链接: https://vjudge.net/problem/HDU-3374 题意: Give you a string with length N, you can generate N stri ...
- BZOJ3218 UOJ#77 A+B Problem(最小割+主席树)
竟然在BZOJ上拿了Rank1太给力啦. p.s.:汗,一发这个就被一堆人在2月27号强势打脸-- 传送门(BZOJ) 传送门(UOJ) 说说这道题目吧: 首先是说说这个构图吧.因为有选择关系,我们很 ...
- HDU 3861 The King’s Problem 最小路径覆盖(强连通分量缩点+二分图最大匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3861 最小路径覆盖的一篇博客:https://blog.csdn.net/qq_39627843/ar ...
- 【bzoj3218】a+b Problem 最小割+主席树
数据范围:$n≤5000$,$a,l,r≤10^9$,$b,w,p≤2\times 10^5$. 我们考虑一种暴力的最小割做法: 首先令$sum=\sum\limits_{i=1}^{n} b_i+w ...
随机推荐
- spring mvc controller间跳转 重定向 传参 (转)
转自:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ 1. 需求背景 需求:spring MVC框架contr ...
- tjkd-html
<div class="result-item"> <div class="kd-item"> <div class=" ...
- 总结-computer
常见问题 1.任务栏位置:%AppData%\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar 2.锁定到任务栏的图标不见了: ...
- C# 动态调用webservice
最近项目中,用到动态调用webservice的内容,此处记录下来,留着以后COPY(我们只需要在XML,config文件,或者数据库中配置webservice连接地址和方法名即可使用): using ...
- JAVA基础篇NO1--环境变量的配置及命名规则
标签(空格分隔): java基础 一:计算机概述 计算机:硬件和软件 硬件:控制器 运算器 存储器 输入和输出设备 存储器:外存(硬盘) 内存 软件:系统软件 应用软件 系统软件:wi ...
- 提取本地环境中部署RDLC的DLL
要使用reportviewer来呈现报表,需要有三个dll Microsoft.ReportViewer.WinForms.DLL Microsoft.ReportViewer.WebForms.DL ...
- EditText添加了ImageSpan后,在两者中间不能输入纯文本
严格来说是连续插入两个ImageSpan之后,在其中间不能够输入纯文本内容. 最后发现问题出现在了SpannableString在设置ImageSpan的时候第四个参数flag的问题. spannab ...
- java 关键字查询时的转义操作
/** * mysql模糊查询时,如果查询关键字本身包含_和%,需要转义 * * @param queryKey 查询关键字 * @return 转义字符 */ private String conv ...
- maven---install报错
若maven项目在install或者run的时候出现莫名奇妙的问题,应该考虑是否在pom.xml中引入的包是否为最新的包: 因为在本地maven仓库中已经存在的包就不会再下载,所以可以从这方面排查问题 ...
- magento搬家
将原来网站文件中的var文件中的cache和session文件删除,将media中的缓存文件删除.然后将所有文件制作成一个压缩包,以减少文件体积,方便转移. 将压缩包转移到新的服务器域名指向的文件夹, ...