今天是2018年1月8日,于沈阳,2018年的第一场大雪,明天就要去北京正式工作了,下午等友人,无聊,故刷Leetcode小题~

第1题、728. Self Dividing Numbers


self-dividing number

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:



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:



Example 2:


Input: 7 Output: False Explanation:



Example 3:


Input: 11 Output: False Explanation:



Example 4:


Input: 10 Output: True Explanation:



思路:
判断一个正整数的二进制是否交替出现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

我就只能写写小题了:-(