程序员面试金典---1

判定字符唯一

  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
  1. 基于位运算的方法:可以使用位运算进行解决。

首先对每个字符都减去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')
posted @   楸枰~  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示