Java日记2018-05-14

第一题 从 1 到 n 整数中 1 出现的次数
最直观的想法,求1到n中每个整数中1出现的次数,然后相加即可。而求每个十进制整数中1出现的次数,我们先判断这个数的个位数是否是1,如果这个数大于10,除以10之后再判断个位数是否为1,循环直至求出该整数包含1的个数

public class NumberOf1Between1AndN {  
  
    public int NumberOf1Between1AndN_Solution(int n) {  
        int count = 0;  
        for (int i = 1; i <= n; i++) {  
            count += getNumOf1(i);  
        }  
  
        return count;  
    }  
  
    private int getNumOf1(int i) {  
        int count = 0;  
        while (i > 0) {  
            if (i % 10 == 1) {  
                count++;  
            }  
            i = i / 10;  
        }  
  
        return count;  
    }  
}  

不直观的算法 参考 https://blog.csdn.net/yi_afly/article/details/52012593 没太理解,今天再想想
若weight为0,则1出现次数为roundbase
若weight为1,则1出现次数为round
base+former+1
若weight大于1,则1出现次数为rount*base+base

public static int count(int n) {
        if(n<1) return 0;
        int round = n;
        int base =1;
        int cnt=0;
        while(round>0) {
            int weight = round%10;
            round/=10;
            cnt+= cnt*base;
            if(weight==1)
                cnt+=(n%base)+1;
            else if(weight>1)
                cnt+=base;
            base*=10;
        }
        return cnt;
    }

第二题 数字序列中某一位的数字
题目没太懂 后边再说

第三题 把数组排成最小的数

方法就是讲整数变string,然后用arrays排序,排序完打印

public static  String PrintMinNumber(int[] numbers) {
        int n = numbers.length;
        String[] nums = new String[n];
        for (int i = 0; i < n; i++)
            nums[i] = numbers[i] + "";
        //lambda箭头来表示,还有这种方法,简洁
        Arrays.sort(nums, (s1, s2) -> (s1 + s2).compareTo(s2 + s1));
 
        String ret = "";
        for (String str : nums)
            ret += str;
        return ret;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首页 资讯 文章 资源 小组 相亲 登录 注册 首页 最新文章 IT 职场 前端 后端 移动端 数据库 运维 其他...
    Helen_Cat阅读 9,342评论 1 10
  • 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到...
    Observer_____阅读 8,073评论 0 1
  • 迎着清晨的曙光,天亮了。 8点左右,我妈来换班,嘱咐她给宝宝喂水,一晚上都没小便。我拖着疲惫不堪的身...
    千末_2045阅读 2,166评论 0 1
  • 在焦头烂额的时光缝隙里,我总是喜欢不厌其烦地去整理那些曾经时光留下的琐碎物件,翻箱倒柜之后一本影集映入眼帘。印刻着...
  • 思念在路上,我却迟迟不能前行。 不是我忘了怎么去寻找,而是你有了你的生活,我,却如个陌生人一般在你的圈子外徘徊...
    迷恋快节奏阅读 1,378评论 0 0