1. 程式人生 > 其它 >728. 自除數——2022/3/31

728. 自除數——2022/3/31

1、題目

自除數 是指可以被它包含的每一位數整除的數。

例如,128 是一個 自除數 ,因為 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
自除數 不允許包含 0

給定兩個整數leftright ,返回一個列表,列表的元素是範圍 [left, right] 內所有的 自除數 。

2、示例

示例 1

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

示例 2

輸入:left = 47, right = 85
輸出:[48,55,66,77]

3、初步解答

3.1 思路及具體步驟

  • 遍歷給定的左右邊界中的所有數
  • 將數轉成字串,得到數中的每一位
  • 根據條件判斷是否符合,如果符合則直接新增至結果集
    • 判斷條件:數對數的每一位取模都為0,則是自除數

3.2 程式碼

public List<Integer> selfDividingNumbers(int left, int right) {
    List<Integer> result = new ArrayList<>();
    for (int i = left; i <= right; i++) {
        String s = "" + i;
        for (int j = 0; j < s.length(); j++) {
            if(((int)s.charAt(j) - 48) == 0){
                break;
            }
            if(i % ((int)s.charAt(j) - 48) != 0){
                break;
            }
            if(j == s.length() -1){
                result.add(i);
            }
        }
    }
    return result;
}

執行耗時:7 ms,擊敗了9.44% 的Java使用者

記憶體消耗:41.3 MB,擊敗了6.24% 的Java使用者