除数ので、
各々は、分割することができる含まれたビットの数を指します。
例えば、128以降128%2 == 1 == 0128パーセント0128パーセント8 == 0ので、除数です。
また、除数ので、ゼロが含まれていません。
デジタル上部所与及び下限、リストのすべての要素のリストは、内側境界(包括的)から除数で出力します。
例1:
入力:
上限左= 1、下限右= 22
出力:[1、2、3、4、5、6、7、8、9、11、12、15、22]
注意:
各境界入力パラメータを満たす1 <=左<=右<= 10000。
ソリューション:
与えられた範囲内の各数値については、我々は直接除数である数から決定されます。
定義により、我々は、最初の非ゼロ数かどうかを決定し、その後数は数で割り切れるするとき、非ゼロか否かを判断します。
例えば、128のために、我々はDを決定する必要があります!= 0 && 128パーセントD == 0、 そしてd = 1、2、8。
この問題に対する簡単な解決策は、モジュロ演算を実行する変換バック整数N%のD == 0をチェックし、文字列に番号を変換することです。
また、最後の桁の整数を取って、10で数を保つことができます。コードセクションでコメントとして。
class Solution {
public List<Integer> selfDividingNumbers(int left, int right) {
ArrayList result=new ArrayList();
for(int i=left; i<=right; i++){
if(isSelfDiv(i)){
result.add(i);
}
}
return result;
}
public boolean isSelfDiv(int num){
for(char c: String.valueOf(num).toCharArray()){
//int n=Integer.parseInt(c+"");//转换效率低
//if(n==0||num%n!=0){
if(c=='0'||num % (c - '0') != 0){
return false;
}
}
return true;
}
}