leetcode做題筆記76最小覆蓋子串

給你一個字符串?s?、一個字符串?t?。返回?s?中涵蓋?t?所有字符的最小子串。如果?s?中不存在涵蓋?t?所有字符的子串,則返回空字符串?""?。

注意:

  • 對于?t?中重復字符,我們尋找的子字符串中該字符數量必須不少于?t?中該字符數量。
  • 如果?s?中存在這樣的子串,我們保證它是唯一的答案。

思路一:滑動窗口

char * minWindow(char * s, char * t){int hash[58] = {0};int lenS = strlen(s);int lenT = strlen(t);int min = 0, max = INT_MAX; for (int i = 0; i < lenT; ++i) hash[t[i] - 'A']++;for (int j = 0, i = 0; j < lenS; ++j) {if (hash[s[j] - 'A'] > 0) lenT--;hash[s[j] - 'A']--;while (lenT == 0) { if (j - i + 1 < max - min + 1) {max = j;min = i;}if (++hash[s[i] - 'A'] > 0) lenT++;i++;}}if (max == INT_MAX) return "";char* res = malloc(sizeof(char) * (max - min + 2));int i = 0;while (min <= max) res[i++] = s[min++];res[i] = '\0';return res;
}

時間復雜度O(n^2),空間復雜度O(n)

分析:

首先建立哈希表,將各個英文字母的數量存放到哈希表中,根據s[i]的字符使哈希表相應位置減一不斷判斷是否為最小子串,最后輸出涵蓋t的子串

總結:

本題考察滑動窗口的應用,將是否為最小子串的判斷編寫清楚即可解決

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

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

相關文章

【Unity】VS Code 沒有智能提示 Unity 中的類

正常來說&#xff0c;VS Code中會對部分輸入類名進行提示&#xff0c;如下圖所述 假如你從Unity 中進入 VS Code后發現沒有提示相關 Unity的類&#xff0c;可能是 Unity 中 有關于 VS Code的相關Package 沒有跟著 VS Code升級到最新版本。 點擊Unity Windows 下拉框中的 Pac…

如何在電力行業運用IPD?

電力行業是國民經濟眾多壟斷行業中較早實施改革的行業之一。近幾年我國電力行業保持著較快的發展速度&#xff0c;也取得了很大的成績&#xff0c;發電機容量和發電量居世界首位。2015-2020年&#xff0c;全國發電量不斷攀升。 電力是以電能作為動力的能源。電力的發現和應用掀…

簡繪ChatGPT支持Midjourney繪圖 支持stable diffusion繪圖

簡繪支持Midjourney繪圖和stable diffusion繪圖。 這意味著簡繪具備Midjourney繪圖和stable diffusion繪圖功能的支持。

生信豆芽菜-單基因表達比較

網址&#xff1a;http://www.sxdyc.com/panCancerExpCom 該工具主要用于查看單基因在泛癌的癌組織和癌旁組織中表達比較&#xff0c;可以只選擇TCGA數據庫&#xff0c;也可以選擇TCGAGTEx數據庫&#xff08;GTEx數據庫&#xff0c;存放了正常組織全基因的表達譜&#xff09; …

人類智能的三個基本要素

人類智能的三個基本要素包括&#xff1a;適應性、靈活性和從稀疏觀察中做出一般推斷的能力。這些要素使得智能系統能夠適應不同的環境和任務&#xff0c;處理多樣性和復雜性&#xff0c;并從有限的信息中進行學習和推理&#xff0c;對于構建更強大和智能的人工智能系統至關重要…

ERROR: While executing gem ... (Gem::FilePermissionError)

sudo gem install -n /usr/local/bin cocoapodsERROR: While executing gem ... (Gem::FilePermissionError)You dont have write permissions for the /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0 directory.解決辦法&#xff1a; 1.刪…

limereport報表使用

在這里我使用報表是以報表的形式顯示數據庫的信息。所以首先需要準備的資料有&#xff1a;limereport源碼&#xff0c;還有數據庫&#xff0c;我這里使用的是qsqlite數據庫。 1、下載limereport報表源碼 2、運行自帶的案例&#xff1a;demo_r1 3、點擊 “Run Report Designer”…

【Spring專題】手寫簡易Spring容器過程分析——引導篇

目錄 前言說在前面閱讀準備 思路整理手寫源碼示例一、手寫前的準備1.1 注解1.2 測試Bean1.3 調用實例 二、構造方法&#xff08;構建基本流程&#xff09;三、實現scan()方法3.1 doGetScanPackage()&#xff1a;獲取掃描路徑3.2 doLoadClassFromDiskAndScan()&#xff1a;從電腦…

HTML大于號、小于號、空格、引號等常用的轉義代碼寫法

在這里插入代碼片HTML 原始碼 顯示結果 描述 < < 小於號或顯示標記 > > 大於號或顯示標記 &amp; & 可用於顯示其它特殊字符 &quot; " 引號 &reg; 己注冊 © © 版權 &trade; ? 商標 &ensp; 半…

dumpsys window

查詢當前活動包名以及類名 adb shell dumpsys window | findstr mCurrentFocusdump出當前所有的窗口信息 adb shell dumpsys window windows

CNN的特性

1、位移不變性 它指的是無論物體在圖像中的什么位置&#xff0c;卷積神經網絡的識別結果都應該是一樣的。 因為CNN就是利用一個kernel在整張圖像上不斷步進來完成卷積操作的&#xff0c;而且在這個過程中kernel的參數是共享的。換句話說&#xff0c;它其實就是拿了同一張“通…

Java 面試八股文

參考&#xff1a; 2023年 Java 面試八股文&#xff08;20w字&#xff09;_json解析失敗_leader_song的博客-CSDN博客

MATLAB算法實戰應用案例精講-【深度學習】預訓練模型-Transformer

目錄 前言 2.Transformer直觀認識 3. Transformer的結構 3.1 Embedding 3.1.1 Input Embedding 3.1.2 Position Encoding 3.2 Encoder

Java 8:Stream API 流式操作

&#x1f497;wei_shuo的個人主頁 &#x1f4ab;wei_shuo的學習社區 &#x1f310;Hello World &#xff01; Java 8&#xff1a;Stream API Java 8 中的 Stream API 是一組用于對集合數據進行處理的新特性&#xff1b;提供一種以聲明式風格對集合進行操作的方式&#xff0c;簡…

【深度學習 video detect】Towards High Performance Video Object Detection for Mobiles

文章目錄 摘要IntroductionRevisiting Video Object Detection BaselinePractice for Mobiles Model Architecture for MobilesLight Flow 摘要 盡管在桌面GPU上取得了視頻目標檢測的最近成功&#xff0c;但其架構對于移動設備來說仍然過于沉重。目前尚不清楚在非常有限的計算…

QT的界面切換

QT的界面切換 步驟一: 創建一個新的 ui 界面

使用基于jvm-sandbox的對三層嵌套類型的改造

使用基于jvm-sandbox的對三層嵌套類型的改造 問題背景 先簡單介紹下基于jvm-sandbox的imock工具&#xff0c;是Java方法級別的mock&#xff0c;操作就是監聽指定方法&#xff0c;返回指定的mock內容。 jvm-sandbox 利用字節碼操作和自定義類加載器的技術&#xff0c;將原始方法…

【JVM】CPU飆高排查方案與思路

文章目錄 CPU飆高排查方案與思路 CPU飆高排查方案與思路 1.使用top命令查看占用cpu的情況 2.通過top命令查看后&#xff0c;可以查看是哪一個進程占用cpu較高&#xff0c;上圖所示的進程為&#xff1a;40940 3.查看進程中的線程信息 4.可以根據進程 id 找到有問題的線程&a…

掛載 IK 分詞器至 Elasticsearch Docker 容器 - Docker Docker Compose 教程

簡介 本博客將講解如何在 Docker 和 Docker-Compose 中運行 Elasticsearch&#xff0c;并掛載 IK 分詞器。 步驟 一、快速運行Elasticsearch:8.1.3 1.首先&#xff0c;我們需要創建一個新的 Docker 網絡&#xff1a;"elastic"。這個網絡會提供給我們接下來所要創…

Ceph分布式存儲系統優化分析

Ceph支持多種存儲訪問接口&#xff0c;現有的多種性能測試工具都可用于Ceph的性能測試&#xff0c;如測試塊接口性能的fio&#xff0c;iometer等&#xff1b;測試CephFS接口的filebench&#xff0c;fio等;測試對象接口的cosbench等。Ceph有專用的基準測試集CBT&#xff0c;其包…