贪心算法之进制最少数目(力扣)

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;
	    }
}

猜你喜欢

转载自blog.csdn.net/qq_62731133/article/details/123966907
今日推荐