LWC 59:728. Self Dividing Numbers

LWC 59:728. Self Dividing Numbers

传送门:728. Self Dividing Numbers

Problem:

A self-dividing number is a number that is divisible by every digit it contains. For example, 128 is a self-dividing number because 128 % 1 == 0, 128 % 2 == 0, and 128 % 8 == 0. Also, a self-dividing number is not allowed to contain the digit zero. Given a lower and upper number bound, output a list of every possible self dividing number, including the bounds if possible.

Example 1:

Input: left = 1, right = 22 Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]

Note:

The boundaries of each input argument are 1 <= left <= right <= 10000.

思路: 非常直观,对每个num,进行拆分判断,合法加入集合,不合法忽略。

一版本:

    public List<Integer> selfDividingNumbers(int left, int right) {
        List<Integer> ans = new ArrayList<>();
        for (int i = left; i <= right; ++i) {
            if (valid(i)) {
                ans.add(i);
            }
        }
        return ans;
    }

    boolean valid(int num) {
        String value = Integer.toString(num);
        for (char c : value.toCharArray()) {
            if (c == '0') return false;
            else {
                if (num % (c - '0') != 0) return false;
            }
        }
        return true;
    }

二版本:

    public List<Integer> selfDividingNumbers(int left, int right) {
        List<Integer> ans = new ArrayList<>();
        for (int i = left; i <= right; ++i) {
            if (valid(i)) {
                ans.add(i);
            }
        }
        return ans;
    }

    boolean valid (int num) {
        int n = num;
        while (num != 0) {
            int c = num % 10;
            if (c == 0) return false;
            else {
                if (n % c != 0) return false;
            }
            num /= 10;
        }
        return true;
    }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HansBug's Lab

1081: [SCOI2005]超级格雷码

1081: [SCOI2005]超级格雷码 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 301  Solv...

2576
来自专栏恰同学骚年

数据结构基础温故-6.查找(上):基本查找与树表查找

只要你打开电脑,就会涉及到查找技术。如炒股软件中查股票信息、硬盘文件中找照片、在光盘中搜DVD,甚至玩游戏时在内存中查找攻击力、魅力值等数据修改用来作弊等,都要...

1193
来自专栏陈满iOS

iOS·枚举变量在 未赋值/赋值为空 的情况下,默认值为0(即第一个枚举类型)

在调用的时候,代码欲从VC的字典数组 self.resource 中获取某字典 self.resource[indexPath.row] 并取出 type 的键...

1761
来自专栏懒人记的专栏

如何用 Go 实现单链表

每节运煤车就是单链表里的元素,每节车厢里的煤炭就是元素中保存的数据。前后车通过锁链相连,作为单链表运煤车,从1号车厢开始,每节车厢都知道后面拉着哪一节车厢,却不...

4320
来自专栏后端之路

cow容器之CopyOnWriteArrayList

java并发容器中有个不得不提的概念,cow(CopyOnWrite) 在jdk1.5之前需要在多线程使用同步集合,一般各位会采用如下方法添加synchroni...

1925
来自专栏葡萄城控件技术团队

深入浅出OOP(五): C#访问修饰符(Public/Private/Protected/Internal/Sealed/Constants)

访问修饰符(或者叫访问控制符)是面向对象语言的特性之一,用于对类、类成员函数、类成员变量进行访问控制。同时,访问控制符也是语法保留关键字,用于封装组件。 Pub...

2939
来自专栏WD学习记录

Leetcode ZigZag Conversion

The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of ...

812
来自专栏ml

Java 基础知识点(必知必会其二)

   1.如何将数字输出为每三位逗号分隔的格式,例如“1,234,467”?    1 package com.Gxjun.problem; 2 3 i...

3745
来自专栏积累沉淀

Hadoop--HDFS API编程封装

HDFS是一个分布式文件系统,既然是文件系统,就可以对其文件进行操作,比如说新建文件、删除文件、读取文件内容等操作。下面记录一下使用JAVA API对HDFS中...

26110
来自专栏LIN_ZONE

Java:对double值进行四舍五入,保留两位小数的几种方法

比如:输入12345.6789,输出可以是12345.68也可以是12345.67。至于是否需要四舍五入,可以通过参数来决定(RoundingMode.UP/R...

953

扫码关注云+社区