438. 找到字符串中所有字母异位词
字符串 所有 找到 字母 异位
2023-09-14 09:01:25 时间
思路:一开始想的是求p的组合,然后遍历所有的长度为len(p)的子串是否在p的组合里就行啦,没想到这个组合非python自带 jj 补充如下
from itertools import combinations, permutations
list(permutations([1,2,3],2)) #列举排列结果[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
list(combinations([1,2,3],2)) #列举组合结果[(1, 2), (1, 3), (2, 3)]
然后又想着直接求p的元素个数字典,然后遍历就完事,结果过了一部分测试用例,超时了。
class Solution:
def findAnagrams(self, s: str, p: str) -> List[int]:
def dic(s):
'''
求s中每个字母的个数字典
'''
dic = {}
for i in s:
if i not in dic:
dic[i] = 1
else:
dic[i] += 1
return dic
p_dic = dic(p)
lis = []
for i in range(len(s)-len(p)+1):
if dic(s[i:len(p)+i]) == p_dic:
lis.append(i)
return lis
反思超时的原因其实就是求字母个数又用O(n)
改进了一手,采用上一个题的思路
49. 字母异位词分组
判断排序后相等不相等就完事
结果A了。
class Solution:
def findAnagrams(self, s: str, p: str) -> List[int]:
p=sorted(p)
lis = []
for i in range(len(s)-len(p)+1):
if sorted(s[i:len(p)+i]) == p:
lis.append(i)
return lis
因为python的排序快一点
相关文章
- c++截取字符串[通俗易懂]
- 给定一个字符串,找到包含该字符串所有字符的最短子串
- Python字符串遍历_Python自学第九节
- Python_字符串常用函数和方法(5)_Python自学第十七节
- Java里面 根据一个字符串 计算他的hash 值(工具类)md5散列的方式计算hash值
- Mybatis-plus 使用 typeHandler 将 String 拼接字符串转换为 List 列表
- 2023-04-13:给定一个字符串数组strs,其中每个字符串都是小写字母组成的, 如果i < j,并且strs[i]和strs[j]所有的字符随意去排列能组
- MySQL如何用分隔符分隔字符串
- Python操作redis字符串(String)详解 (三)大数据
- Java遍历文件夹下所有文件并替换指定字符串详解编程语言
- java学习笔记05–字符串 .详解编程语言
- MySQL实现批量字符串替换(mysql替换所有字符串)
- 请教一个正则表达式,匹配所有Html标签外部的指定字符串
- 《PHP编程最快明白》第二讲数字、浮点、布尔型、字符串和数组
- javascript去除字符串中所有标点符号和提取纯文本的正则
- PHP清除数组中所有字符串两端空格的方法
- 判定一个字符串是否为有效时间的函数