import java.util.Scanner;
/*
如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 。例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是。
给你一个表示十进制整数的字符串 n ,返回和为 n 的 十-二进制数 的最少数目。
示例 1:
输入:n = "32"
输出:3
解释:10 + 11 + 11 = 32
示例 2:
输入:n = "82734"
输出:8
示例 3:
输入:n = "27346209830709182346"
输出:9
*/
public class 贪心算法_进制的最少数目 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String n=sc.next();
System.out.println(minPartitions(n));
}
public static int minPartitions(String n) {
char[] arr=n.toCharArray();//将字符串转换为数组
int sum=0;
for(char a:arr) {//遍历
sum=Math.max(sum,a-'0');//取最大值
}
return sum;
//ACSLL码中48-57==>0-9
//65-90==>A-Z,97-122==>a-z
// int sum=0;
// for(int i=0;i<n.length();i++) {
// if(sum==9) {//如果元素=9,则直接返回9,因为个位数里9是最大的
// return sum;
// }
// if(n.charAt(i)>sum+48) {//找最大值
// sum=n.charAt(i)-48;
// }
// }
// return sum;
}
}
贪心算法之进制最少数目(力扣)
最新推荐文章于 2023-03-15 15:13:06 发布