0120leetcode刷题5道python

面试题01.01

题目描述:
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例:
在这里插入图片描述
解答:

class Solution:
    def isUnique(self, astr: str) -> bool:
        nastr=sorted(astr)
        for i in range(len(astr)-1):
            if nastr[i]==nastr[i+1]:
                return False
        return True

'''
利用set的不可重复性
class Solution:
    def isUnique(self, astr: str) -> bool:
        return len(set(astr)) == len(astr)
'''

面试题01.02

题目描述:
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例:
在这里插入图片描述
解答:

class Solution:
    def CheckPermutation(self, s1: str, s2: str) -> bool:
        return sorted(s1)==sorted(s2)

面试题01.03

题目描述:
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)

示例:
在这里插入图片描述
解答:

class Solution:
    def replaceSpaces(self, S: str, length: int) -> str:
        return "%20".join(S[:length].split(" "))

面试题01.04

题目描述:
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
回文串不一定是字典当中的单词。

示例:
在这里插入图片描述

解答:

class Solution:
    def canPermutePalindrome(self, s: str) -> bool:
        '''
        每个字符数量是偶数就能回文
        最多只允许有一个奇数出现
        '''
        odd={
    
    }
        for ch in s:
            if ch in odd.keys():
                del odd[ch]
            else:
                odd[ch]=0
        if len(odd.keys())>1:
            return False
        else:
            return True

面试题01.05

题目描述:
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。

示例:
在这里插入图片描述
解答:

class Solution:
    def oneEditAway(self, first: str, second: str) -> bool:
        l1=len(first)
        l2=len(second)
        if l1>l2:
            s1=first
            s2=second
        else:
            s1=second
            s2=first
        k=len(s2)
        for i in range(0,len(s2)):
            if s1[i]!=s2[i]:
                k=i
                break
        return s1[k+1:]==s2[k:] or s1[k+1:]==s2[k+1:]

猜你喜欢

转载自blog.csdn.net/yeqing1997/article/details/112849056