程序员面试金典---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 @ 2023-04-08 20:14  楸枰~  阅读(15)  评论(0)    收藏  举报