365 二进制中有多少个1
题目:计算在一个 32 位的整数的二进制表示中有多少个 1.
样例
给定 32 (100000),返回 1
给定 5 (101),返回 2
给定 1023 (111111111),返回 9
思路:主要用到了bin,十进制->二进制,生成的是(-)0bxx的字符串,所以后面可以将0b replace ”
class Solution:
# @param num: an integer
# @return: an integer, the number of ones in num
def countOnes(self, num):
# write your code here
if num==1:
return 1
if num==0:
return 0
str_num=bin(num).replace('0b','') //将0b转空
if num>0:
return str_num.count('1')
return 32-str_num.count('0')
181 将整数A转换为B
题目:如果要将整数A转换为B,需要改变多少个bit位?
注意事项
Both n and m are 32-bit integers.
样例
如把31转换为14,需要改变2个bit位。
(31)10=(11111)2
(14)10=(01110)2
思路:由于负数和整数比较时,有点麻烦,我可以将每个数都补充到32位,然后再循环,找到不同的bit位,即为需要改变的。
class Solution:
"""
@param a, b: Two integer
return: An integer
"""
def bitSwapRequired(self, a, b):
# write your code here
if a == b : return 0
strA=self.bu(a)
strB=self.bu(b)
n = len(strA)
count = 0
for i in range(-1,-n-1,-1): //循环
if strA[i] != strB[i]:
count += 1
return count
def bu(self,a): //根据正负进行补充0,1
if a>0:
b='0b'
c='0'
else:
b='-0b'
c='1'
stra=bin(a).replace(b,'')
stra=(32-len(stra))*c+stra
return stra
55比较字符串
题目:比较两个字符串A和B,确定A中是否包含B中所有的字符。字符串A和B中的字符都是 大写字母
注意事项
在 A 中出现的 B 字符串里的字符不需要连续或者有序。
给出 A = “ABCD” B = “ACD”,返回 true
给出 A = “ABCD” B = “AABC”, 返回 false
class Solution:
"""
@param A : A string includes Upper Case letters
@param B : A string includes Upper Case letters
@return : if string A contains all of the characters in B return True else return False
"""
def compareStrings(self, A, B):
# write your code here
A=list(A);B=list(B);i=0;
while i<len(B):
if B[i] in A: #若B内的值在A,删除A中的B
del A[A.index(B[i])]
else:
return False
i+=1
return True