百度筆試題:找最小的不重複數
版權所有。所有權利保留。
歡迎轉載,轉載時請註明出處:
http://blog.csdn.net/xiaofei_it/article/details/17123835
給定任意一個正整數,求比這個數大且最小的“不重複數”,“不重複數”的含義是相鄰兩位不相同,例如1101是重複數,而1201是不重複數。
思路很簡單:
1、把原數加1。
2、從高位開始找重複位。
3、將這位加1。
4、如果是10,此位變0,指標指向高位,轉3。如果不是10,轉5。
5、這位是否與高位相同,相同的話,轉3。不同則轉6。
6、把這位以後刷成01串。
其實本質就是貪心,把最高的重複位變掉,之後刷成01串,但變後可能又重複了,那麼再變。
自己試試即可。
程式碼如下:
#include <iostream>
#include <cstring>
using namespace std;
#define MAX 100
int n[MAX],len;
void convert(string str)
{
memset(n,0,sizeof(n));
for (int i=0;i<str.length();i++)
n[str.length()-1-i]=str[i]-'0';
len=str.length();
}
void find()
{
int i;
n[0]++;
for (i=0;n[i]==10;i++)
{
n[i]=0;
n[i+1]++;
}
if (i==len) len++;
bool yes=true;
for (i=len-1;i>=1;i--)
if (n[i]==n[i-1])
{
yes=false;break;
}
if (yes) return;
n[--i]++;
while (true)
{
while (n[i]==10)
{
n[i]=0;
n[++i]++;
}
if (i==len)
len++;
if (n[i]==n[i+1])
n[i]++;
else
break;
}
if (i==0) return;
n[--i]=0;
for (i--;i>=0;i--)
n[i]=1-n[i+1];
}
int main()
{
string str;
while (cin>>str)
{
convert(str);
find();
for (int i=len-1;i>=0;i--) cout<<n[i];
cout<<endl;
}
return 0;
}
輸入樣例:
121
19898989
989898989
989898
1989898
2199
120
0
2
21
20
輸出樣例:
123
20101010
1010101010
1010101
2010101
2301
121
1
3
23
21
相關文章
- JAVA面試題筆試題-查詢一個字串不重複最長的串(個人方法)Java面試題筆試字串
- C++【生成16個不重複字母】(生成不重複隨機數)C++隨機
- 匹配指定位數不重複數字
- 高效產生不重複的隨機數隨機
- 找最小的k個數(優先佇列)佇列
- 百度實習生筆試題求教筆試
- 巧用物件,生成不重複隨機數物件隨機
- 牛客網 找最小數(sort結構體查詢、北郵機試)結構體
- 如何生成隨機不重複的11位數字隨機
- 高效產生一組不重複的隨機數隨機
- matlab之生成不重複的隨機整數Matlab隨機
- mongodb怎麼統計不重複數量?MongoDB
- C語言50題之百度筆試題C語言筆試
- 數學類筆試題筆試
- Excel 透視表如何不重複計數Excel
- leetcode 287 尋找重複的數LeetCode
- javascript生成不重複隨機數程式碼例項JavaScript隨機
- C語言程式生成指定範圍的不重複的隨機數C語言隨機
- 經典面試問題: Top K 之 —- 海量資料找出現次數最多或,不重複的。面試
- 經典面試問題: Top K 之 ---- 海量資料找出現次數最多或,不重複的。面試
- js生成不重複數字陣列程式碼例項JS陣列
- 去除重複字母(不同字元的最小序列)問題字元
- 筆試題 類中static變數筆試變數
- NOIP 複習題之最小生成樹
- js獲取指定位數不重複隨機數程式碼例項JS隨機
- 百度2015校招機器學習筆試題機器學習筆試
- 貪心演算法-找不重疊的區間段演算法
- 演算法筆記04--分治法之尋找最大最小元素演算法筆記
- 前端技術分享:不重複的組成4位數求平均值前端
- 百度筆試題:繩子最多覆蓋多少個點筆試
- [每日一題] 第二十題:最小的k個數每日一題
- 數字之魅:尋找陣列中的最大值和最小值陣列
- 筆試程式碼題--搜狗--汪仔做對的題數範圍筆試
- 字元流中第一個不重複的字元字元
- 生成固定長度不重複的隨機字串隨機字串
- JavaScript 陣列隨機不重複元素JavaScript陣列隨機
- 文字框onkeyup,不重複執行
- LeetCode 90 | 經典遞迴問題,求出所有不重複的子集IILeetCode遞迴