【算法】算法题-20231222

在这里插入图片描述

一、1002. 查找共用字符

给你一个字符串数组 words ,请你找出所有在 words 的每个字符串中都出现的共用字符( 包括重复字符),并以数组形式返回。你可以按 任意顺序 返回答案。

示例 1:
输入:words = [“bella”,“label”,“roller”]
输出:[“e”,“l”,“l”]
示例 2:
输入:words = [“cool”,“lock”,“cook”]
输出:[“c”,“o”]

class Solution1:

    def common(self,words):
        res=[]
        if not words:
            return res

        key=set(words[0])   #{b,e,l,a}
        for k in key:
            minimum=min(a.count(k) for a in words)
            res+=minimum*k
        return res

words = ["bella","label","roller"]
s1=Solution1()
res=s1.common(words)
print(res)

二、1047. 删除字符串中的所有相邻重复项

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。
在 S 上反复执行重复项删除操作,直到无法继续删除。
在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

示例:
输入:“abbaca”
输出:“ca”
解释:
例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。

解题思路
根据题意的充分理解,我们可分析如下:
多组相邻重复项,我们无论先删除哪一项,都不会影响最终结果。
删除当前项是需要拿上一项出来对比的,所以我们需要用临时栈存放之前的内容。
当前项和栈顶一致,弹出栈顶抵消即可。若不一致,压入栈留存,供后续使用。

def test6(s):
    li=[]
    for i in s:
        if li and li[-1]==i:
            li.pop()
        else:
            li.append(i)

    return "".join(li)

三、面试题 01.04. 回文排列

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

示例1:

输入:“tactcoa”
输出:true(排列有"tacocat"、“atcocta”,等等)

思路:
利用Counter函数可以统计每个字符出现的次数。
如果单个字符的个数超过1,则不是回文串

class Solution:
    def canPermutePalindrome(self, s):
        d={
   }
        for i in s:
            if i not in d:
                d[i]=1
            else:
                d[i]+=1
        print(d)
        odd = 0
        for val in d.values():
            if val % 2 == 1:
                odd += 1
                if odd > 1:
                    return False
        return True


ss=Solution()
w="tactcoaq"
print(ss.canPermutePalindrome(w))

在这里插入图片描述

相关推荐

  1. 20231228 SQL基础50打卡

    2023-12-22 07:26:02       67 阅读
  2. 传纸条(算法

    2023-12-22 07:26:02       58 阅读
  3. 前端中级算法

    2023-12-22 07:26:02       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-22 07:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-22 07:26:02       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-22 07:26:02       82 阅读
  4. Python语言-面向对象

    2023-12-22 07:26:02       91 阅读

热门阅读

  1. Nginx/Tomcat/SpringBoot配置自生成SSL证书

    2023-12-22 07:26:02       74 阅读
  2. eclipse部分常用快捷键的使用

    2023-12-22 07:26:02       57 阅读
  3. rpc【通义】rpc原理【gpt】

    2023-12-22 07:26:02       51 阅读
  4. 【LeetCode】225. 用队列实现栈(Queue接口 & Deque类)

    2023-12-22 07:26:02       71 阅读
  5. 单例模式的七种写法

    2023-12-22 07:26:02       65 阅读
  6. 学习VUE之正则表达式全集整理

    2023-12-22 07:26:02       57 阅读
  7. 3-智能合约介绍

    2023-12-22 07:26:02       56 阅读