如果整數??x
?滿足:對于每個數位?d
?,這個數位?恰好?在?x
?中出現?d
?次。那么整數?x
?就是一個?數值平衡數?。
給你一個整數?n
?,請你返回?嚴格大于?n
?的?最小數值平衡數?。
如果n的位數是k,n它的下一個大的平衡數一定不會超過 k+1個k+1。
直接遍歷之后判斷即可。
class Solution {
public:int nextBeautifulNumber(int n) {int m=n;int cnt=0;while(m){m/=10; cnt++;}vector<int>Bnum(9);Bnum[0]=0;Bnum[1]=1;Bnum[2]=22;Bnum[3]=333;Bnum[4]=4444;Bnum[5]=55555;Bnum[6]=666666;Bnum[7]=7777777;Bnum[8]=88888888;int max_n=Bnum[cnt+1];int num_cnt[10];cout<<n<<" "<<max_n;for(int i=n+1;i<=max_n;i++){m=i;memset(num_cnt,0,sizeof(num_cnt));while(m){num_cnt[m%10]++;m/=10;}int flag=true;for(int j=0;j<=9;j++){if(num_cnt[j]>=1&&num_cnt[j]!=j){flag=false;break;}}if(flag)return i; }return 0;}
};