程序员面试金典---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')
分类:
力扣-程序员面试金典题目整理
标签:
力扣学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!