程序员面试金典---1
判定字符唯一
- 简短思路:使用Set()直接进行去重操作,然后判断原来的长度和现在的长度是否一致。
class Solution: def isUnique(self, astr: str) -> bool: // set去重 temp = list(set(astr)) // 判断长度 if len(astr) == len(temp): return True else: return False
- 基于位运算的方法:可以使用位运算进行解决。
首先对每个字符都减去
a字符,即计算到a的距离,然后这个字符就可以右移多少这个距离,如果某个字符串出现,就会在这个26位上已经被置一,因此做与操作就会为0;如果不为0,就需要做或运算,是为了将新来的字符的位置置一。class Solution: def isUnique(self, astr: str) -> bool: mask = 0 for char in astr: // 计算距离 move_bit = ord(char) - ord('a') // 如果这个位置之前被置一据说明已经被存在 if mask & (1<<move_bit) != 0: return False // 否则,就需要将这个位置置一 else: mask |= (1 << move_bit) return True
判定是否互为字符重排
思路:解决的办法其实就是判断两个字符串按照顺序排序是否相同。也可以放到数组中,然后排序比较。
python有一个方法就可以进行比较:class Solution: def CheckPermutation(self, s1: str, s2: str) -> bool: return Counter(s1) == Counter(s2)
URL化
可以使用
replace方法进行解决:class Solution: def replaceSpaces(self, S: str, length: int) -> str: // 这里固定了字符串的长度 return S[:length].replace(' ','%20')

浙公网安备 33010602011771号