力扣刷题 day48:10-18

1.4的幂

给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x

力扣刷题 day48:10-18_第1张图片

方法一:不断除以4 

#方法一:不断除以4
def isPowerOfFour(n):
    if n==0:
        return False
    while n!=1:
        if n%4!=0:
            return False #肯定不是4的幂
        n=n//4 #继续除以4
    return True

2.找不同 

给定两个字符串 s 和 t ,它们只包含小写字母。

字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

请找出在 t 中被添加的字母。

力扣刷题 day48:10-18_第2张图片

方法一:位运算

#方法一:位运算
def findTheDifference(s,t):
    res=0 #起始为0 开始异或运算
    for i in s:
        res^=ord(i)  #转换成ASCII码,根据可以交换性质a^b^c=a^c^b
    for j in t:
        res^=ord(j)  #相同的会变成0 最后多出来的跟0异或就是多出来的
    return chr(res)

3.汉明距离

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。

给你两个整数 x 和 y,计算并返回它们之间的汉明距离。力扣刷题 day48:10-18_第3张图片

方法一:异或+位运算 

#方法一:异或+位运算
def hammingDistance(x,y):
    tem=x^y #异或运算,找出其中的1的个数
    res=0
    while tem:
        res+=tem&1 #最右边数字判断
        tem>>=1
    return res

你可能感兴趣的:(力扣刷题,leetcode,算法,数据结构)