c# LeetCode刷题笔记6- 十-二进制数的最少数目

c# LeetCode刷题笔记6- 十-二进制数的最少数目

1.题目描述

如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 。例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是。

给你一个表示十进制整数的字符串 n ,返回和为 n 的 十-二进制数 的最少数目。

示例 1:

输入:n = “32”
输出:3
解释:10 + 11 + 11 = 32
示例 2:
输入:n = “82734”
输出:8
示例 3:
输入:n = “27346209830709182346”
输出:9
2.解析:这道题的解题思路是求这组数字字符中的最大值,但是将一个数字字符5转换成整数变成的是十进制数字53,不是我们想要的数字5.解决办法是减去一个字符0,字符0对应的十进制数字是48,相减之后就会得到数字5.

 private void button18_Click(object sender, EventArgs e)
        {
            string str = "56957";
            int a = MinPartitions(str);
            Console.WriteLine(a);
        }
          //目的是找到字符串中数字最大的那个字符
        public int MinPartitions(string n)
        {
            //解法1
            #region
            //char s = n[0];
            //int max = Convert.ToInt32(Convert.ToString(s));
            //for (int i = 1; i < n.Length; i++)
            //{
            //    int tmp = Convert.ToInt32(Convert.ToString(n[i]));
            //    if (max< tmp)
            //    {
            //        max = tmp;
            //    }
            //}
            //return max;
            #endregion
            //解法2
            int max = 0;
            for (int i = 0; i < n.Length; i++)
            {
                //int tmp = Convert.ToInt32(n[0]);//此时的tmp=53
                // int e = n[0];//字符5对应53(十进制)
                // int a = e - '0';//字符0对应48(十进制) 此时a的值为5
                max = Math.Max(n[i] - '0', max);
            }
            return max;

        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值