第二题:数字字符
题目:
在十进制表示中,任意一个正整数都可以用字符
‘0’-‘9’
表示出来。但是当‘0’-‘9’
这些字符每种字符的数量有限时,可能有些正整数就无法表示出来了。比如你有两个‘1’
,一个‘2’
,那么你能表示出11,12,121
等等,但是无法表示出10,122,200
等数。
现在你手上拥有一些字符,它们都是‘0’-‘9’
的字符。你可以选出其中一些字符然后将它们组合成一个数字,那么你所无法组成的最小的正整数是多少?
输入描述:
第一行包含一个由字符
’0’-‘9’
组成的字符串,表示你可以使用的字符。1 ≤ 字符串长度 ≤ 1000
输出描述:
输出你所无法组成的最小正整数。
样例:
in: 55 out: 1
in: 123456789 out: 10
import java.util.Scanner;
/*
* 文件名 :NUM 2018年美团点评春招第二题
* 作者:Anderson
* 创建日期:2018/3/23
* 功能说明:
*/
public class NUM {
public static void main(String[] args){
char c[];
int su =0;
int num[]=new int[10];
for (int i =0;i<10;i++){
num[i]=0;
}
Scanner input = new Scanner(System.in);
String s1 =input.next();
char s[] = s1.toCharArray();
int len = s.length;
for (int i =0;i<len;i++)
num[s[i]-'0']++;
for (int i=1;i<9;i++)
if (num[i]==0){
System.out.print(i);
break;}
else if (num[0]==0&&num[i]!=0){
System.out.print(i*10);
break;
}
}
}
主要思想:字符可多次相同输入,考虑用数组记录出现次数。根据判断,不能组成的整数,只有两种,、
1、个位数 1-9未出现,是为了排除正整数不含零的情况
2、仅0出未出现,考虑出现最小个数乘以10
未测试时间,只在本地测试