golang力扣leetcode 438.找到字符串中所有字母异位词

简介: golang力扣leetcode 438.找到字符串中所有字母异位词

438.找到字符串中所有字母异位词

438.找到字符串中所有字母异位词

题解

大水题

代码

package main
func findAnagrams(s string, p string) []int {
  var result []int
  wind := make(map[byte]int)
  need := make(map[byte]int)
  for i := range p {
    need[p[i]]++
  }
  left, right, match := 0, 0, 0
  for right < len(s) {
    c := s[right]
    right++
    if need[c] != 0 {
      wind[c]++
      if wind[c] == need[c] {
        match++
      }
    }
    for right-left == len(p) {
      if match == len(need) {
        result = append(result, left)
      }
      c = s[left]
      left++
      if need[c] != 0 {
        if wind[c] == need[c] {
          match--
        }
        wind[c]--
      }
    }
  }
  return result
}
目录
相关文章
|
27天前
|
JavaScript
力扣3333.找到初始输入字符串Ⅱ
【10月更文挑战第9天】力扣3333.找到初始输入字符串Ⅱ
32 1
|
1月前
|
C++
Leetcode第43题(字符串相乘)
本篇介绍了一种用C++实现的字符串表示的非负整数相乘的方法,通过逆向编号字符串,将乘法运算转化为二维数组的累加过程,最后处理进位并转换为字符串结果,解决了两个大数相乘的问题。
24 9
|
1月前
|
索引
力扣(LeetCode)数据结构练习题(3)------链表
力扣(LeetCode)数据结构练习题(3)------链表
78 0
|
1月前
力扣(LeetCode)数据结构练习题(2)
力扣(LeetCode)数据结构练习题(2)
29 0
|
1月前
|
存储
力扣(LeetCode)数据结构练习题
力扣(LeetCode)数据结构练习题
52 0
|
1月前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
17 0
|
1月前
【LeetCode 22】459.重复的子字符串
【LeetCode 22】459.重复的子字符串
28 0
|
1月前
【LeetCode 20】151.反转字符串里的单词
【LeetCode 20】151.反转字符串里的单词
19 0
|
1月前
【LeetCode 19】541.反转字符串II
【LeetCode 19】541.反转字符串II
20 0
|
2月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行