北京工作前一天

今天是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;
        }
    }

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

    猜你喜欢

    转载自blog.csdn.net/u010429424/article/details/79002297