專題二串聯所有單詞的子串

1.題目

題目分析:

有一個字符串s和字符串數組,如何字符串數組里面的元素可以組成一個字符串,然后要在字符串里面找到連續子串跟組成的字符串一樣,返回起始地址。

2.算法原理

這道題可以把字符串數組的元素string看出char,把字符串里面也按照大小合成一個字母,也就是說n個字母組成的單詞在字符串里面找連續子串,就可以用異位詞的方法處理,用哈希表來存儲,string表示字符,int表示出現的次數,先把字符串數組的元素放到哈希表,然后開始進窗口,用substr函數把多個字符一起讀取,放入第二個哈希表中,比較是否大于第一個哈希表這個字符出現的次數,小于說明是第一次出現就可以把count++,當界限大于字符串數組元素總長時,就要開始出窗口了,向判斷次數在--,避免把種類減少了。

注意,上面的情況是按照從開頭開始切分,但有時不是開頭,而是第二個第三個,前面都是無效字符,所以就需要在來一次for循環,次數是字符串數組的單個元素的大小,這樣就可以遍歷所有情況了。

3.代碼實現

優化操作,hash1[in]和hash2[out]有可能會插入新元素,因為都是未出現的,就會開辟空間去存放新元素,造成空間損耗。

class Solution {
public:vector<int> findSubstring(string s, vector<string>& words) {vector<int> result;unordered_map<string,int> hash1;//unordered_map<string,int> hash2;for(auto& s:words) hash1[s]++;int len=words[0].size(),m=words.size();for(int i=0;i<len;i++){unordered_map<string,int> hash2;for(int left=i,right=i,count=0;right+len<=s.size();right+=len){string in =s.substr(right,len);hash2[in]++;if(hash1.count(in)&&hash2[in]<=hash1[in]) count++;if(right-left+1>len*m){string out=s.substr(left,len);if(hash1.count(out)&&hash2[out]<=hash1[out]){count--;}hash2[out]--;left+=len;}if(count==m) result.push_back(left);}}return result;}
};

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

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

相關文章

scala類型檢測和轉換

在scala中關于類型的檢測的api一共有以下三個&#xff1a; &#xff08;1&#xff09;obj.isInstanceOf[T]&#xff1a;判斷 obj 是不是 T 類型。 &#xff08;2&#xff09;obj.asInstanceOf[T]&#xff1a;將 obj 強轉成 T 類型。 &#xff08;3&#xff09;classOf[T]&am…

【論文閱讀】VAD: Vectorized Scene Representation for Efficient Autonomous Driving

一、介紹 VAD是華科團隊設計的一個端到端無人駕駛框架&#xff0c;針對傳統的無人駕駛框架的模塊化設計的問題&#xff0c;該算法使用向量化的策略進行了端到端的實現。傳統的模塊化設計使得感知模塊完全依賴于感知模塊的計算結果&#xff0c;這一解耦實際上從規劃模塊的角度損…

探索Java多線程的核心概念與實踐技巧,帶你從入門到精通!

各位看官早安午安晚安呀 如果您覺得這篇文章對您有幫助的話 歡迎您一鍵三連&#xff0c;小編盡全力做到更好 歡迎您分享給更多人哦 今天我們來學習多線程編程-"掌握線程創建、管理與安全"&#xff1a; 上一節課程我們鋪墊了一系列的東西&#xff0c;引出來了我們的多…

互動多媒體項目 自行車互動

該項目為UE4 +自行車騎行速度 互動項目 結果預覽 : 1. 獲取自行車速度 這里使用的是Arduino單片機 + 霍爾傳感器 霍爾傳感器: 單片機完整代碼: #define HALL_PIN 2 // 霍爾傳感器連接到D2(中斷引腳) volatile unsigned long lastTime = 0; // …

STM32——GPIO介紹

GPIO(General-Purpose IO ports,通用輸入/輸出接口)模塊是STM32的外設接口的核心部分,用于感知外界信號(輸入模式)和控制外部設備(輸出模式),支持多種工作模式和配置選項。 1、GPIO 基本結構 STM32F407 的每個 GPIO 引腳均可獨立配置,主要特性包括: 9 組 GPIO 端口…

學習筆記:Python網絡編程初探之基本概念(一)

一、網絡目的 讓你設備上的數據和其他設備上進行共享&#xff0c;使用網絡能夠把多方鏈接在一起&#xff0c;然后可以進行數據傳遞。 網絡編程就是&#xff0c;讓在不同的電腦上的軟件能夠進行數據傳遞&#xff0c;即進程之間的通信。 二、IP地址的作用 用來標記唯一一臺電腦…

DeepSeek 醫療大模型微調實戰討論版(第一部分)

DeepSeek醫療大模型微調實戰指南第一部分 DeepSeek 作為一款具有獨特優勢的大模型,在醫療領域展現出了巨大的應用潛力。它采用了先進的混合專家架構(MoE),能夠根據輸入數據的特性選擇性激活部分專家,避免了不必要的計算,極大地提高了計算效率和模型精度 。這種架構使得 …

JetBrains學生申請

目錄 JetBrains學生免費授權申請 IDEA安裝與使用 第一個JAVA代碼 1.利用txt文件和cmd命令運行 2.使用IDEA新建項目 JetBrains學生免費授權申請 本教程采用學生校園郵箱申請&#xff0c;所以要先去自己的學校申請校園郵箱。 進入JetBrains官網 點擊立即申請&#xff0c;然…

LINUX網絡基礎 [五] - HTTP協議

目錄 HTTP協議 預備知識 認識 URL 認識 urlencode 和 urldecode HTTP協議格式 HTTP請求協議格式 HTTP響應協議格式 HTTP的方法 HTTP的狀態碼 ?編輯HTTP常見Header HTTP實現代碼 HttpServer.hpp HttpServer.cpp Socket.hpp log.hpp Makefile Web根目錄 H…

六十天前端強化訓練之第八天到第十四天——綜合案例:用戶管理系統

歡迎來到編程星辰海的博客講解 看完可以給一個免費的三連嗎&#xff0c;謝謝大佬&#xff01; 目錄 一、知識體系詳解 1. 變量與作用域 2. 箭頭函數特性 3. 數組高階函數 4. DOM操作原理 5. 事件傳播機制 6. 閉包核心原理 7. 原型繼承體系 8. Promise工作流程 二、綜…

技術周總結 03.03 - 03.09 周日(Java監控 SpringAI)

文章目錄 一、03.05 周三二、03.08 周六openAI 的Spring開發 一、03.05 周三 jvisualvm java自帶的監控和故障排除工具 命令行執行后&#xff0c;會出現 JConsole 二、03.08 周六 openAI 的Spring開發 引入 spring-ai-openai-spirng-boot-starter 依賴 Spring AI http…

DeepSeek:中國AGI破局者的技術革命與生態重構

在AI領域被"算力霸權"與"技術壟斷"籠罩的今天&#xff0c;一家來自杭州的初創公司正以顛覆性創新撕開行業鐵幕。DeepSeek&#xff08;深度求索&#xff09;不僅重新定義了AGI技術研發范式&#xff0c;更通過開源生態構建引發全球AI產業格局的深度重構。 一…

manus本地部署使用體驗

manus部署 https://github.com/mannaandpoem/OpenManus git clone https://github.com/mannaandpoem/OpenManus.git 或者手工下載zip包解壓&#xff0c;包很小&#xff0c;只有幾百K。 cd OpenManus-main #創建python環境&#xff0c;有python3的可以用python3 python -m ven…

【統計至簡】【入門測試1】給定數據矩陣X,如何求其質心、中心化數據、標準化數據、格拉姆矩陣、協方差矩陣、相關系數矩陣

給定數據矩陣X&#xff0c;如何求其質心、中心化數據、標準化數據、格拉姆矩陣、協方差矩陣、相關系數矩陣。 ??設數據矩陣 X X X是一個 n p n\times p np的矩陣&#xff0c;其中 n n n是樣本數量&#xff0c; p p p是變量數量&#xff0c; X ( x i j ) X (x_{ij}) X(xij?…

CI/CD—Jenkins、Maven安裝

Jenkins簡介 Jenkins 是一款廣泛使用的開源持續集成和持續交付&#xff08;CI/CD&#xff09;工具&#xff0c;以下是對它的詳細介紹&#xff1a; 基本信息 起源與發展&#xff1a;Jenkins 最早起源于 Hudson 項目&#xff0c;后來從 Hudson 項目中分離出來獨立發展。自 2011 …

抽獎系統測試報告

項目鏈接: 管理員登錄頁面 項目功能: 管理員登錄: 登錄方式分為兩種: 手機號密碼登錄: 正確輸入密碼和手機號登錄 短信驗證碼登錄: 輸入手機號,等待驗證碼,輸入驗證碼登錄 管理員注冊: 登錄頁面點擊注冊按鈕即可注冊管理員身份 人員管理模塊: 人員管理模塊分為注冊…

【高級篇】大疆Pocket 3加ENC編碼器實現無線RTMP轉HDMI進導播臺

【高級篇】大疆Pocket 3加ENC編碼器實現無線RTMP轉HDMI進導播臺 文章目錄 準備工作連接設備RTMP概念ENCSHV2推流地址設置大疆Pocket 3直播設置總結 老鐵們好&#xff01; 很久沒寫軟文了&#xff0c;今天給大家帶了一個干貨&#xff0c;如上圖&#xff0c;大疆Pocket 3加ENC編…

【 <一> 煉丹初探:JavaWeb 的起源與基礎】之 Servlet 與 JSP 的協作:MVC 模式的雛形

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Servl…

【不是廣告】華為昇騰的一小步,Pytorch的一大步

華為昇騰的一小步&#xff0c;Pytorch的一大步 關鍵詞 首個、中國首個、全球第十、最高級別&#xff01;看看這些字眼&#xff0c;就知道事情不簡單&#xff01; 書接上文《Pytorch的一小步&#xff0c;昇騰芯片的一大步》 在2023年10月4日PyTorch 2.1版本的發布博客上&…

python從入門到精通(二十六):python文件操作之Word全攻略(基于python-docx)

python文件操作之word技巧大全 word技巧基礎到高級操作大全A.準備工作1. 安裝python-docx庫2. 導入庫 B.基礎操作1. 創建Word文檔1.1 創建文檔對象1.2 添加word標題1.3 添加word段落1.4 設置段落樣式1.5 創建有序列表1.6 創建無序列表1.7添加word分頁1.8 添加word圖片1.9 添加w…