美团面试题二---没写完系列续集

//问题描述:输入一长串整数字符,例如654631
这些数字的组合不能表示的最小整数是多少
例如:输入:0123456789
     输出:11
   即:0123456789不能表示的最小整数为11;


输入:55

输出:1

#include<stdio.h>
#include<string.h>
int main(){
	int n,m,i,j=0,temp;
	char in[999];
	int a[10],b[10];
	for(i=0;i<10;i++){
		a[i]=0;
		b[i]=0;
	}
	scanf("%s",in);
	m=strlen(in);
//	printf("%d",m); 
    for(i=0;i<m;i++){
    	if(in[i]=='0')a[0]++;
    	if(in[i]=='1')a[1]++;
    	if(in[i]=='2')a[2]++;
    	if(in[i]=='3')a[3]++;
    	if(in[i]=='4')a[4]++;
    	if(in[i]=='5')a[5]++;
    	if(in[i]=='6')a[6]++;
    	if(in[i]=='7')a[7]++;
    	if(in[i]=='8')a[8]++;
    	if(in[i]=='9')a[9]++;
	}
	while(1){
		j++;
		temp=j;
		char tt[100];
		itoa(temp, tt, 10);
		//printf("%d",strlen(tt));
        for(i=0;i<strlen(tt);i++){
    	if(tt[i]=='0')b[0]++;
    	if(tt[i]=='1')b[1]++;
    	if(tt[i]=='2')b[2]++;
    	if(tt[i]=='3')b[3]++;
    	if(tt[i]=='4')b[4]++;
    	if(tt[i]=='5')b[5]++;
    	if(tt[i]=='6')b[6]++;
    	if(tt[i]=='7')b[7]++;
    	if(tt[i]=='8')b[8]++;
    	if(tt[i]=='9')a[9]++;
	    }
	    for(i=0;i<10;i++){
	    	if(a[i]<b[i]){
	    		printf("%d",j);
	    		return ;
			}
		}
		for(i=0;i<10;i++){
		b[i]=0;
	    }
	}		
}

猜你喜欢

转载自blog.csdn.net/sinat_33472635/article/details/79660285