LeetCode-476
给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。
注意:
给定的整数保证在32位带符号整数的范围内。
你可以假定二进制数不包含前导零位。
示例 1:
输入: 5
输出: 2
解释: 5的二进制表示为101(没有前导零位),其补数为010。所以你需要输出2。
示例 2:
输入: 1
输出: 0
解释: 1的二进制表示为1(没有前导零位),其补数为0。所以你需要输出0。
思路:
例如5的2进制是101,它的补数其实等于111-101-1,可以发现规律,一个数的补数等于该数对应二进制位上全为1的数减去它自身再减一
solution:
class Solution:
def findComplement(self, num: int) -> int:
i = 0
while 2**i<= num:
i+=1
return 2**i - num -1
LeetCode-412
写一个程序,输出从 1 到 n 数字的字符串表示。
1. 如果 n 是3的倍数,输出“Fizz”;
2. 如果 n 是5的倍数,输出“Buzz”;
3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。
示例:
n = 15,
返回:
[
"1",
"2",
"Fizz",
"4",
"Buzz",
"Fizz",
"7",
"8",
"Fizz",
"Buzz",
"11",
"Fizz",
"13",
"14",
"FizzBuzz"
]
solution:
class Solution:
def fizzBuzz(self, n: int) -> List[str]:
ans = []
for i in range(1,n+1):
s = ''
if i % 3 == 0:
s+='Fizz'
if i % 5 == 0:
s+='Buzz'
if s == '':
s+=str(i)
ans.append(s)
return ans