python力扣438.找到字符串中所有字母異位詞

給定兩個字符串 sp,找到 s 中所有 p異位詞的子串,返回這些子串的起始索引。不考慮答案輸出的順序。

示例 1:

輸入: s = “cbaebabacd”, p = “abc”
輸出: [0,6]
解釋: 起始索引等于 0 的子串是 “cba”, 它是"abc" 的異位詞。 起始索引等于 6 的子串是 “bac”, 它是 “abc” 的異位詞。

示例 2:

輸入: s = “abab”, p = “ab”
輸出: [0,1,2]
解釋: 起始索引等于 0 的子串是 “ab”, 它是 “ab”
的異位詞。 起始索引等于 1 的子串是 “ba”, 它是 “ab” 的異位詞。 起始索引等于 2 的子串是 “ab”, 它是 “ab”
的異位詞。

提示:

1 <= s.length, p.length <= 3 * 104 s 和 p 僅包含小寫字母

我最開始用的排序來確定兩個字符串是否相等,但在一些長的字符串上就沒有那么好用。所以使用這個:collections.Counter這個操作可以返回一個字典,存儲對象的出現頻率。比如 p = “aabb”,那么 Counter(p)的結果是一個字典:Counter({‘a’: 2, ‘b’: 2})。

大體思路如下:使用一個先加后減的原則,首先初始化滑動窗口(從0到n-1)的字符頻率為一個字典,然后從n-1開始遍歷,先添加當前字符到字典中,如果該字典與p的頻率字典相等,可判定為是異位詞的子串,將1-n+1添加到結果列表中(目前的i是指向滑動窗口結尾的,需要減掉滑動窗口的長度),不管是否如此,都需要移除左邊的字符,然后在下一次循環的時候加入右邊新的字符。
另外:如果頻率等于0,要注意移除key,不然字典會對應不上。

后來知道,這個思想叫滑動窗口。

class Solution(object):def findAnagrams(self, s, p):""":type s: str:type p: str:rtype: List[int]"""from collections import Counterp_count = Counter(p)n = len(p)ans = []window_count = Counter(s[:n - 1])for i in range(n - 1, len(s)):window_count[s[i]] += 1if window_count == p_count:ans.append(i - n + 1)window_count[s[i - n + 1]] -= 1if window_count[s[i - n + 1]] == 0:del window_count[s[i - n + 1]]return ans

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/72823.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72823.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/72823.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【大模型實戰篇】使用GPTQ量化QwQ-32B微調后的推理模型

1. 量化背景 之所以做量化&#xff0c;就是希望在現有的硬件條件下&#xff0c;提升性能。量化能將模型權重從高精度&#xff08;如FP32&#xff09;轉換為低精度&#xff08;如INT8/FP16&#xff09;&#xff0c;內存占用可減少50%~75%。低精度運算&#xff08;如INT8&#xf…

【MySQL】架構

MySQL架構 和其它數據庫相比&#xff0c;MySQL有點與眾不同&#xff0c;它的架構可以在多種不同場景中應用并發揮良好作用。主要體現在存儲引擎的架構上&#xff0c;插件式的存儲引擎架構將查詢處理和其它的系統任務以及數據的存儲提取相分離。這種架構可以根據業務的需求和實…

JavaScript 金額運算精度丟失問題及解決方案

JavaScript 金額運算精度丟失問題及解決方案 1. 前言2. 為什么 JavaScript 計算金額會精度丟失&#xff1f;2.1 JavaScript 使用 IEEE 754 雙精度浮點數2.2 浮點運算錯誤示例**錯誤示例 1&#xff1a;0.1 0.2 ≠ 0.3****錯誤示例 2&#xff1a;浮點乘法精度問題** 3. 解決方案…

Docker安裝,并pullMySQL和redis

卸載原Docker 您的 Linux 發行版可能提供非官方的 Docker 軟件包&#xff0c;這可能與 Docker 提供的官方軟件包沖突。在安裝 Docker Engine 正式版之前&#xff0c;您必須先卸載這些軟件包。 sudo dnf remove docker \ docker-client \ docker-client-latest \ docker-common…

國內首臺太空采礦機器人亮相,宇宙資源開發邁入新階段

隨著地球資源的日益枯竭&#xff0c;人類將目光投向了浩瀚的宇宙。太空采礦作為一項前沿科技&#xff0c;正逐步從科幻走向現實。近日&#xff0c;中國礦業大學成功研制出國內首臺太空采礦機器人&#xff0c;標志著我國在太空資源開發領域邁出了重要一步。 太空采礦并非新鮮概念…

簡介PyCDE:Python CIRCT Design Entry

簡介PyCDE&#xff1a;Python CIRCT Design Entry 引言 在硬件設計和驗證領域&#xff0c;隨著設計復雜性的增加&#xff0c;傳統的方法往往難以滿足現代設計的需求。PyCDE&#xff08;Python CIRCT Design Entry&#xff09;作為CIRCT項目的一部分&#xff0c;旨在為硬件設計…

市場熱點復盤20240319

以下是對當前市場熱點板塊的分析總結&#xff0c;按邏輯分類如下&#xff1a; 一、機器人產業鏈核心標的 1. 減速器與核心部件 襄陽軸承&#xff1a;直接受益人形機器人減速器軸承需求&#xff0c;技術國內領先。金帝股份&#xff1a;聚焦機器人手指關節諧波減速機保持架&am…

目標檢測——清洗數據

清洗VOC格式數據集代碼示例 import os import xml.etree.ElementTree as ETdef process_annotations(image_folder, annotation_folder):# 遍歷標簽文件夾中的所有XML文件for xml_file in os.listdir(annotation_folder):if not xml_file.endswith(.xml):continuexml_path os…

Kubeasz工具快速部署K8Sv1.27版本集群(二進制方式)

文章目錄 一、基本信息二、服務器初始化操作三、使用Kubeasz部署K8S集群四、驗證集群 一、基本信息 1、部署需要滿足前提條件&#xff1a; 注意1&#xff1a;確保各節點時區設置一致、時間同步&#xff1b;注意2&#xff1a;確保在干凈的系統上開始安裝&#xff1b;注意3&…

RG-S3760應用協議配置

RG-S3760應用協議配置 1. dhcp 服務配置 提問&#xff1a;如何在設備上開啟dhcp 服務&#xff0c;讓不同VLAN 下的電腦獲得相應的IP 地址&#xff1f; 回答&#xff1a; 步驟一&#xff1a;配置VLAN 網關IP 地址&#xff0c;及將相關端口劃入相應的VLAN 中 S3760#con t S…

Java 文件和IO流基礎(生動形象版)

系列文章目錄 Java文件和IO流基礎部分 文件VSIO流 文章目錄 系列文章目錄前言一、文件的定義和理解&#xff1a; 1.專業定義&#xff1a; 2.文件系統和路徑&#xff1a; 二、IO流的定義和分類 1.定義&#xff1a;2.流的分類&#xff1a;修飾器模式的核心作用&#xff1a;基礎結…

Linux驅動學習筆記(四)

高級字符設備進階 1.一個完整的IO過程包含以下幾個步驟&#xff1a;1應用程序向操作系統發起IO調用請求(系統調用)&#xff1b;2操作系統準備數據&#xff0c;把IO設備的數據加載到內核緩沖區&#xff1b;3操作系統拷貝數據&#xff0c;把內核緩沖區的數據從內核空間拷貝到應用…

el-table的行向上移動向下移動,刪除選定行

<template><el-table :data"tableData" border style"width: 100%"><!-- 其他列 --><el-table-column label"ID"><template slot-scope"scope">{{ scope.$index }}</template></el-table-colu…

人工智能之數學基礎:矩陣的降維

本文重點 在現實世界中,我們經常會遇到高維數據。例如,圖像數據通常具有很高的維度,每個像素點都可以看作是一個維度。高維數據不僅會帶來計算和存儲上的困難,還可能會導致 “維數災難”,即隨著維度的增加,數據的稀疏性和噪聲也會增加,從而影響數據分析的效果。因此,我…

2025年,電腦還需要分區嗎?

隨著2025年的到來&#xff0c;電腦存儲空間已經不像以前那么金貴&#xff0c;固態硬盤&#xff08;SSD&#xff09;容量更大、速度更快&#xff0c;云存儲也成了日常標配。許多人開始質疑&#xff1a;電腦還需要像以前那樣分區嗎&#xff1f; 一、分區到底是什么意思&#xff…

Springboot項目集成maven-assembly-plugin進行打包

通常我們將應用部署到服務器的某個目錄下&#xff0c;一般情況下我們會提供像target&#xff08;存放應用jar包&#xff09;&#xff0c;bin&#xff08;項目啟動/停止腳本&#xff09;&#xff0c;config&#xff08;項目配置文件&#xff09;&#xff0c;logs&#xff08;項目…

CSS3 基礎布局技術與響應式設計

1. CSS3 基礎與布局技術 1.1 Flexbox 布局 Flexbox 是一種一維布局模型&#xff0c;適合用于在一個方向上&#xff08;行或列&#xff09;排列元素。 基本概念&#xff1a; 容器&#xff08;Container&#xff09;&#xff1a;應用 display: flex; 的元素。項目&#xff08…

鴻蒙NEXT項目實戰-百得知識庫01

代碼倉地址&#xff0c;大家記得點個star IbestKnowTeach: 百得知識庫基于鴻蒙NEXT穩定版實現的一款企業級開發項目案例。 本案例涉及到多個鴻蒙相關技術知識點&#xff1a; 1、布局 2、配置文件 3、組件的封裝和使用 4、路由的使用 5、請求響應攔截器的封裝 6、位置服務 7、三…

【DeepSeek應用】本地部署deepseek模型后,如何在vscode中調用該模型進行代碼撰寫,檢視和優化?

若已成功在本地部署了 DeepSeek 模型(例如通過 vscode-llm、ollama 或私有 API 服務),在 VS Code 中調用本地模型進行代碼撰寫、檢視和優化的完整流程如下: 1. 準備工作:確認本地模型服務狀態 模型服務類型: 若使用 HTTP API 服務(如 FastAPI/Flask 封裝),假設服務地址…

jenkins 配置郵件問題整理

版本&#xff1a;Jenkins 2.492.1 插件&#xff1a; A.jenkins自帶的&#xff0c; B.安裝功能強大的插件 配置流程&#xff1a; 1. jenkins->系統配置->Jenkins Location 此處的”系統管理員郵件地址“&#xff0c;是配置之后發件人的email。 2.配置系統自帶的郵件A…