- Hamming Distance
思路:比較兩個(gè)數(shù)的二進(jìn)制數(shù)形式里面的比特?cái)?shù)不同的位數(shù)有多少位
【Ours】
class Solution(object):
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
distance = 0
shang1,shang2 = x,y
while shang1 or shang2:
[shang1,yu1] = divmod(shang1,2)
[shang2,yu2] = divmod(shang2,2)
if yu1 != yu2:
distance += 1
return distance
【簡(jiǎn)潔版】
^ 按位異或運(yùn)算符:當(dāng)兩對(duì)應(yīng)的二進(jìn)位相異時(shí)法瑟,結(jié)果為1
bin() 返回一個(gè)整數(shù) int 或者長(zhǎng)整數(shù) long int 的二進(jìn)制表示。
count() 方法用于統(tǒng)計(jì)字符串里某個(gè)字符出現(xiàn)的次數(shù)凳厢∥戆龋可選參數(shù)為在字符串搜索的開始與結(jié)束位置悟耘。
def hammingDistance(self, x, y):
"""
:type x: int
:type y: int
:rtype: int
"""
return bin(x^y).count('1')
- Self Dividing Numbers
思路:判斷數(shù)字能否整除他每一位上的數(shù)字。
- all() 函數(shù)用于判斷給定的可迭代參數(shù) iterable 中的所有元素是否不為 0拷况、''、False 或者 iterable 為空掘殴,如果是返回 True赚瘦,否則返回 False。
- filter() 函數(shù)用于過濾序列奏寨,過濾掉不符合條件的元素起意,返回由符合條件元素組成的新列表。
該接收兩個(gè)參數(shù)病瞳,第一個(gè)為函數(shù)揽咕,第二個(gè)為序列,序列的每個(gè)元素作為參數(shù)傳遞給is函數(shù)進(jìn)行判套菜,然后返回 True 或 False亲善,最后將返回 True 的元素放到新列表中。
class Solution(object):
def selfDividingNumbers(self, left, right):
is_self_dividing = lambda num: '0' not in str(num) and all([num % int(digit) == 0 for digit in str(num)])
return filter(is_self_dividing, range(left, right + 1))
class Solution(object):
def selfDividingNumbers(self, left, right):
"""
:type left: int
:type right: int
:rtype: List[int]
"""
a = []
for i in range(left,right+1):
if '0' not in str(i) and all(i% int(j) == 0 for j in str(i)):
a.append(i)
return a