行业网站推广,高端网站建设好处,专业轻电商网站建设公司,wordpress自带相册这里写目录标题 一、1002. 查找共用字符二、1047. 删除字符串中的所有相邻重复项三、面试题 01.04. 回文排列 一、1002. 查找共用字符
给你一个字符串数组 words #xff0c;请你找出所有在 words 的每个字符串中都出现的共用字符#xff08; 包括重复字符#xff09;… 这里写目录标题 一、1002. 查找共用字符二、1047. 删除字符串中的所有相邻重复项三、面试题 01.04. 回文排列 一、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 reskeyset(words[0]) #{b,e,l,a}for k in key:minimummin(a.count(k) for a in words)resminimum*kreturn reswords [bella,label,roller]
s1Solution1()
ress1.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]1else:d[i]1print(d)odd 0for val in d.values():if val % 2 1:odd 1if odd 1:return Falsereturn TruessSolution()
wtactcoaq
print(ss.canPermutePalindrome(w))