LeetCode Hot 100 找到字符串中所有字母異位詞

給定兩個字符串?s?和?p,找到?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?僅包含小寫字母

方法一:滑動窗口
思路

根據題目要求,我們需要在字符串 s 尋找字符串 p 的異位詞。因為字符串 p 的異位詞的長度一定與字符串 p 的長度相同,所以我們可以在字符串 s 中構造一個長度為與字符串 p 的長度相同的滑動窗口,并在滑動中維護窗口中每種字母的數量;當窗口中每種字母的數量與字符串 p 中每種字母的數量相同時,則說明當前窗口為字符串 p 的異位詞。

算法

在算法的實現中,我們可以使用數組來存儲字符串 p 和滑動窗口中每種字母的數量。

細節

當字符串 s 的長度小于字符串 p 的長度時,字符串 s 中一定不存在字符串 p 的異位詞。但是因為字符串 s 中無法構造長度與字符串 p 的長度相同的窗口,所以這種情況需要單獨處理。

代碼

class Solution {
public:vector<int> findAnagrams(string s, string p) {int sLen = s.size(),pLen = p.size();if(sLen < pLen){return vector<int>();}vector<int> sCount(26);vector<int> pCount(26);vector<int> ans;for(int i = 0; i < pLen;i ++){++sCount[s[i] - 'a'];++pCount[p[i] - 'a'];}if(sCount == pCount){ans.emplace_back(0);}for(int i = 0; i < sLen - pLen; ++i){--sCount[s[i] - 'a'];++sCount[s[i+pLen] - 'a'];if(sCount == pCount){ans.emplace_back(i + 1);}}return ans;}
};

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

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

相關文章

關于廬山派多視頻層(layer)和bind_layer的應用

嘉立創分了適配層和OSD&#xff08;我稱它為圖片層&#xff09;顧名思義&#xff0c;一個是能顯示視頻流到LCD屏幕&#xff0c;一個是只能顯示照片&#xff0c;也就是你可以對不同層進行操作而不影響其他層&#xff0c;解決的場景就是用于你畫了一個正方形在照片上&#xff0c;…

多傳感器標定簡介

目錄 標定內容及方法 雷達內參標定 IMU內參標定 編碼器內參標定 相機內參標定 雷達和相機外參標定 多雷達外參標定 手眼標定 融合中標定 總結 連續時間 標定內容及方法 雷達內參標定 1) 目的 由于安裝原因&#xff0c;線束之間的夾角和設計不一致&#xff0c;會導致…

day46/60

浙大疏錦行 DAY 46 通道注意力(SE注意力) 知識點回顧&#xff1a; 不同CNN層的特征圖&#xff1a;不同通道的特征圖什么是注意力&#xff1a;注意力家族&#xff0c;類似于動物園&#xff0c;都是不同的模塊&#xff0c;好不好試了才知道。通道注意力&#xff1a;模型的定義和插…

提升創作效率:輕松調用固定素材與模板

日常工作和生活中&#xff0c;我們經常需要復制粘貼不同類型的數據&#xff0c;如文本、圖片、文件等。使用剪切板管理工具可以快速訪問之前復制的內容&#xff0c;而無需反復切換應用進行復制操作。 這款綠色便攜版應用&#xff0c;無需安裝&#xff0c;雙擊即開&#xff0c;…

【C++】組合模式

目錄 一、模式核心概念與結構二、C 實現示例&#xff1a;文件系統三、組合模式的關鍵特性四、應用場景五、組合模式與其他設計模式的關系六、C 標準庫中的組合模式應用七、優缺點分析八、實戰案例&#xff1a;圖形編輯器九、實現注意事項如果這篇文章對你有所幫助&#xff0c;渴…

C++包管理工具:conan2持續集成 (CI) 教程

1.持續集成 (CI) ? 這是一個高級主題&#xff0c;需要具備 Conan 的基礎知識。請先閱讀并練習用戶教程。本節面向設計和實施涉及 Conan 包的生產 CI 管道的 DevOps 和構建工程師。如果不是這種情況&#xff0c;您可以跳過本節。 持續集成 (CI) 對不同用戶和組織有不同的含義…

免費SSL證書一鍵申請與自動續期

免費SSL證書申請與自動續期教程 本文介紹如何通過樂此加密&#xff08;www.letsencrypt.top) 實現免費SSL證書一鍵配置和自動續期 一、準備工作 服務器要求 Linux 系統&#xff08;推薦 Ubuntu/CentOS&#xff09;已安裝 curl 和 crontab擁有 sudo 權限的用戶 域名驗證 確保域…

【NLP】自然語言項目設計

目錄 項目簡介 要求 需要考慮的問題 硬件需求和環境配置 n卡驅動配置 以cuda11.8 版本為例 下載對應的cudnn(version11) 安裝GPU版本的torch 安裝gpu版本的TensorFlow 檢查cuda安裝情況 項目簡介 訓練一個模型&#xff0c;實現歌詞仿寫生成 任務類型&#xff1a;文本…

設計模式:觀察者模式 (Observer) 案例詳解

目錄 一、引言&#xff1a;為什么需要觀察者模式&#xff1f; 二、觀察者模式的核心原理 1. 角色劃分 2. 類圖關系 三、經典案例解析 案例1&#xff1a;天氣監測系統 案例2&#xff1a;股票價格監控系統 案例3&#xff1a;MVC架構中的模型-視圖分離 案例4&#xff1a;J…

CTF-Misc:開啟全方位解題之旅

目錄 一、CTF-Misc 入門指引二、基礎技能儲備2.1 文件格式識別2.2 基礎工具使用 三、信息搜集技巧3.1 搜索引擎技巧3.2 網絡信息挖掘 四、編碼轉換奧秘4.1 常見編碼類型4.2 編碼轉換工具 五、隱寫分析秘籍5.1 圖片隱寫5.1.1 LSB 隱寫5.1.2 顏色通道與 Exif 信息5.1.3 圖片修復與…

Adobe創意套件深度挖掘:效率倍增與靈感迸發的新玩法

最近在深入體驗奧地利Blueskyy藝術學院的Adobe正版教育訂閱&#xff0c;并研究全家桶時有不少新發現&#xff0c;忍不住想和大家分享一下。 先簡單說下這個訂閱的感受&#xff1a; Firefly 積分。 這應該是我用過Firefly積分最多的版本&#xff0c;1500點/周。對于我們這些創意…

左神算法之有序二維矩陣中的目標值查找

有序二維矩陣中的目標值查找 目錄 有序二維矩陣中的目標值查找1. 題目描述2. 問題解釋3. 解決思路方法一&#xff1a;逐行二分查找&#xff08;適合行數較少的情況&#xff09;方法二&#xff1a;利用行列有序特性&#xff08;最優解&#xff09; 4. 代碼實現5. 總結 1. 題目描…

深入理解AVL樹及其旋轉操作

AVL樹的概念 二叉搜索樹雖可以縮短查找的效率&#xff0c;但如果數據有序或接近有序二叉搜索樹將退化為單枝樹&#xff0c;查找元素相當于在順序表中搜索元素&#xff0c;效率低下。因此&#xff0c;兩位俄羅斯的數學家G.M.Adelson-Velskii和E.M.Landis在1962年發明了一種方法…

URL帶有中文會引入哪些問題

處理含中文字符的 URL 1 為什么會出現“亂碼”或崩潰&#xff1f; URL 標準&#xff08;RFC 3986&#xff09;規定&#xff1a;除少數保留字符外&#xff0c;URL 只能包含 ASCII。中文屬于 Unicode&#xff0c;因此必須先轉換。如果直接把 https://example.com/路徑/ 這樣的字…

結構體字段能否單獨加 mut

你問的這個問題在 Rust 里很常見&#xff1a; 一、結構體字段能否單獨加 mut 1. 結構體字段能否單獨加 mut&#xff1f; 不能。Rust 中&#xff0c;mut 是用來修飾變量綁定的&#xff0c;可變性是綁定的屬性&#xff0c;而不是結構體字段本身的屬性。 你不能寫&#xff1a; …

scGPT-spatial 復現

文章目錄 ? 總體流程總覽&#xff08;從 H5AD 到模型訓練&#xff09;&#x1f527; 步驟 1&#xff1a;讀取 H5AD 文件并做基礎預處理&#x1f9f1; 步驟 2&#xff1a;構造訓練樣本輸入&#xff08;token、value&#xff09;&#x1f4e6; 步驟 3&#xff1a;使用 DataColla…

運放電壓跟隨器為什么要加電阻

運放電壓跟隨器為什么要加電阻 我們常見運放的電壓跟隨器如下&#xff1a; 有時候會看見電路中加兩個電阻&#xff1a; 作用就是保護運放&#xff0c;起限流電阻的作用。 當輸入電壓高的時候&#xff0c;運放內部存在鉗位二極管&#xff0c;此電阻就能限流。 并不是所有運放…

MinerU 2.0部署

簡介 MinerU 2.0使用sglang加速&#xff0c;與之前差別較大&#xff0c;建議按照官方的Docker鏡像的方式啟動。 Docker鏡像 Dockerfile 這是官方的Dockerfile # Use the official sglang image FROM lmsysorg/sglang:v0.4.7-cu124# install mineru latest RUN python3 -m …

黑馬python(十七)

目錄&#xff1a; 1.數據可視化-地圖-基礎案例 2.全國疫情地圖 3.河南省疫情地圖繪制 4.基礎柱狀圖構建 5.基礎時間線柱狀圖繪制 6.動態GDP柱狀圖繪制 1.數據可視化-地圖-基礎案例 圖示有點對的不準&#xff0c;可以通過后面的參數 2.全國疫情地圖 3.河南省疫情地圖繪制…

Segment Anything in High Quality之SAM-HQ論文閱讀

摘要 最近的 Segment Anything Model(SAM)在擴展分割模型規模方面取得了重大突破,具備強大的零樣本能力和靈活的提示機制。盡管 SAM 在訓練時使用了 11 億個掩碼,其掩碼預測質量在許多情況下仍不理想,尤其是對于結構復雜的目標。我們提出了 HQ-SAM,使 SAM 能夠精確地分割…