今天是2018年1月8日,于沈阳,2018年的第一场大雪,明天就要去北京正式工作了,下午等友人,无聊,故刷Leetcode小题~
第1题、728. Self Dividing Numbers
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
.
思路:
利用“除10取余”方法,获得整数数位上的每一位数字,然后判断该数字是否为0,是否能被整数整除
class Solution {
public List<Integer> selfDividingNumbers(int left, int right) {
List<Integer> list = new LinkedList<Integer>();
for(int i = left; i <= right; i++) {
int p = 10, j = i;
boolean flag = false;
while(j != 0) {
int r = j % p;
if(r == 0 || i % r != 0) {
flag = true;
break;
}
j /= p;
}
if(!flag) {
list.add(i);
}
}
return list;
}
}
第2题、693. Binary Number with Alternating Bits
Given a positive integer, check whether it has alternating bits: namely, if two adjacent bits will always have different values.
Example 1:
Input: 5 Output: True Explanation: The binary representation of 5 is: 101
Example 2:
Input: 7 Output: False Explanation: The binary representation of 7 is: 111.
Example 3:
Input: 11 Output: False Explanation: The binary representation of 11 is: 1011.
Example 4:
Input: 10 Output: True Explanation: The binary representation of 10 is: 1010.
思路:
判断一个正整数的二进制是否交替出现0、1,原谅我不要脸地使用了API:Integer.toBinaryString(),直接把整数转化为二进制字符串,然后判断。
class Solution {
public boolean hasAlternatingBits(int n) {
String s = Integer.toBinaryString(n);
int len = s.length();
boolean flag = true;
for(int i = 0; i < len - 1; i++) {
if(s.charAt(i) == s.charAt(i+1)) {
flag = false;
break;
}
}
return flag;
}
}
我就只能写写小题了:-(