Day54 判斷子序列 + 不同的子序列

392 判斷子序列

題目鏈接:392. 判斷子序列 - 力扣(LeetCode)

給定字符串?s?和?t?,判斷?s?是否為?t?的子序列。

字符串的一個子序列是原始字符串刪除一些(也可以不刪除)字符而不改變剩余字符相對位置形成的新字符串。(例如,"ace""abcde"的一個子序列,而"aec"不是)。

進階:

如果有大量輸入的 S,稱作 S1, S2, … , Sk 其中 k >= 10億,你需要依次檢查它們是否為 T 的子序列。在這種情況下,你會怎樣改變代碼?

輸入:s = "abc", t = "ahbgdc"
輸出:true

思路:本題可使用雙指針分別遍歷s、t來進行判斷,這里不使用該方法,使用動態規劃方法獲取s和t的最長公共子序列長度,判斷是否與s的長度一致。

class Solution {
public:bool isSubsequence(string s, string t) {vector<vector<int>> dp(s.size() + 1, vector<int>(t.size() + 1, 0));for (int i = 1; i <= s.size(); i++){for (int j = 1; j <= t.size(); j++){if (s[i - 1] == t[j - 1]) dp[i][j] = dp[i - 1][j - 1] + 1;else dp[i][j] = dp[i][j - 1];}}if (dp[s.size()][t.size()] == s.size()) return true;return false;}
};

115 不同的子序列

題目鏈接:115. 不同的子序列 - 力扣(LeetCode)

給你兩個字符串?s?和?t?,統計并返回在?s?的?子序列?中?t?出現的個數,結果需要對?109?+ 7 取模。

輸入:s = "rabbbit", t = "rabbit"
輸出:3

思路:本題可看作是背包問題,從s中拿出字符,放到大小為t.size()的背包,放的條件是字符相等可放入,使用01背包模板。

class Solution {
public:int numDistinct(string s, string t) {int m = s.size(), n = t.size();const int mod = 1000000007;vector<int> dp(n + 1, 0);dp[0] = 1;for (int i = 0; i < m; i++) { // 遍歷物品for (int j = n; j >= 1; j--) { // 遍歷背包if(s[i] == t[j - 1]){dp[j] += dp[j - 1];dp[j] %= mod;}}}return dp[n];}
};

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

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

相關文章

記一次服務器數據庫被攻擊勒索

如圖&#xff0c;早上一起來就發現&#xff0c;我的MongoDB數據庫里面的信息全部沒有了&#xff0c;只留下一段話。 大致意思就是&#xff1a;我的數據庫的數據被他們備份然后全部刪掉了&#xff0c;我必須要支付0.0059的bitcoin&#xff08;折合400美刀&#xff09;來贖回我的…

Springboot+WebSocket實現消息推送

WebSocket是一種在單個TCP連接上進行全雙工通信的協議。WebSocket通信協議于2011年被IETF定為標準RFC 6455&#xff0c;并由RFC7936補充規范。WebSocketAPI也被W3C定為標準。 WebSocket使得客戶端和服務器之間的數據交換變得更加簡單&#xff0c;允許服務端主動向客戶端推送數…

學習率調整

學習率調整 import mathdef adjust_learning_rate(optimizer, epoch, args):"""Decay the learning rate with half-cycle cosine after warmup"""if epoch < args.warmup_epochs:lr args.lr * epoch / args.warmup_epochs else:lr args.m…

不是,你不會還在用雙層遍歷循環來做新舊數組對比,尋找新增元素吧?

目錄 一、雙層循環遍歷 1.1、雙循環錯誤示范 1.2、正確的做法 ①使用array.includes() ②使用set 二、array.includes()的使用與技巧 2.1、基本語法 2.2、返回值 2.3、使用技巧 2.3.1、用戶輸入驗證 2.3.2、權限檢查 2.4、兼容問題 三、總結 一、雙層循環遍歷 1.…

【重學C語言】十七、預處理指令

【重學C語言】十七、預處理指令 預處理指令預定義宏`#define` 宏定義示例注意事項特殊符號條件編譯頭文件包含`#pragma`預處理指令 C語言中的預處理指令(Preprocessor Directives)是一種特殊的指令,它們在編譯過程的早期階段(即實際編譯之前)被預處理器(Preprocessor)處…

OpenCV學習 基礎圖像操作(十六):圖像距離變換

基礎原理 顧名思義&#xff0c;我們可以利用像素之間的距離作為對該像素的一種刻畫&#xff0c;并將其運用到相應的計算之中。然而&#xff0c;在一幅圖像之中&#xff0c;某種類型的像素并不是唯一的&#xff0c;因此我門常計算的是一類像素到另一類的最小距離&#xff0c;并…

My Spirit | “頂級復盤”

世界不會在意你的自尊&#xff0c; 人們看到的只是你的成就。 在你沒有成就之前&#xff0c; 切勿過分強調自尊。 ——菲茨杰拉德《了不起的蓋茨比》 目錄 My Spirit | “頂級復盤”00 | 日復盤01 | 周復盤2.1 周計劃2.2 周復盤2.3 下步計劃2.4 下步總結 02 | 月復盤2.1 本月目…

香橙派KunPengPro評測

一、引言 二、開箱 2.1、主要包含說明 1、充電器(贈typec-c線) 2、香橙派kunpengpro(已經帶裝好帶散熱器) 3、SD卡(32G)(已經帶裝好系統openEuler 22.03 (LTS-SP3)) (注意&#xff1a;上電接HDMI線可直接用&#xff0c;賬號&#xff1a;openEuler 密碼&#xff1a;openEuler)…

vue使用tailwindcss

安裝依賴 pnpm add -D tailwindcss postcss autoprefixer創建配置文件tailwind.config.js npx tailwindcss init在配置文件content中添加所有模板文件的路徑 /** type {import(tailwindcss).Config} */ export default {content: [./index.html, ./src/**/*.{vue,js,ts,jsx,…

【Linux】開發工具入門指南,輕松掌握你的開發利器

開發工具 1. 軟件包管理器yum1.1 軟件包安裝方式1.2 yum的"三板斧"1.3 yum的周邊 2. 開發工具3. 編輯器vim4. 編譯器gcc、g5. 項目自動化構建工具make、Makefile6. 進度條小程序7. 調試器gdb 1. 軟件包管理器yum 1.1 軟件包安裝方式 源代碼安裝&#xff1a;用戶手動…

微信小程序 npm構建+vant-weaap安裝

微信小程序&#xff1a;工具-npm構建 報錯 解決&#xff1a; 1、新建miniprogram文件后&#xff0c;直接進入到miniprogram目錄&#xff0c;再次執行下面兩個命令&#xff0c;然后再構建npm成功 npm init -y npm install express&#xff08;Node js后端Express開發&#xff…

智慧校園的機遇與挑戰

隨著5G、物聯網、大數據等技能的日漸老練&#xff0c;數字化正在滲透到各行各業中&#xff0c;為事務立異和價值增加供給支撐。在教育職業&#xff0c;運用智能化體系賦能教育辦理越來越受歡迎&#xff0c;教育信息化方針一再出臺&#xff0c;進一步加快了智慧校園落地的腳步。…

Linux - 文件管理高級 sed

3.處理字符 sed ① sed 默認情況下不會修改原文件內容 ② sed 是一種非交互式的編輯器 3.1 工作原理 將原文件一行一行的進行處理&#xff0c;取出一行&#xff0c;放入“模式空間進行處理”&#xff0c;處理完成之后將結果輸出到屏幕上&#xff0c;然后讀取下一行&#xf…

彭濤 | 2024年5月小結

5月份還是蠻有刺激的&#xff0c;做了蠻多的事情&#xff0c;但是沒賺到錢&#xff0c;真是一屯操作猛如虎&#xff0c;一看賬戶0.5。 就喜歡創業這種一天天累死累活還不賺錢的感覺&#xff0c;哈哈哈哈 老規矩簡單說下這個月的情況&#xff0c;如果對你有收獲就最好了。 游學丹…

測繪外業需要注意些什么?

在進行測繪外業時&#xff0c;需要注意的事項涉及多個方面&#xff0c;包括充分的準備工作、合理的設備選擇、精確的操作技巧以及細致的數據處理。下面將具體展開這些要點&#xff1a; 1. 充分準備 - 了解任務要求&#xff1a;在開始外業工作前&#xff0c;需要明確測繪的目…

VUE框架前置知識總結

一、前言 在學習vue框架中&#xff0c;總是有些知識不是很熟悉&#xff0c;又不想系統的學習JS&#xff0c;因為學習成本太大了&#xff0c;所以用到什么知識就學習什么知識。此文檔就用于記錄零散的知識點。主要是還是針對與ES6規范的JS知識點。 以下實驗環境都是在windows環…

頭歌頁面置換算法第2關:計算OPT算法缺頁率

2 任務:OPT算法 2.1 任務描述 設計OPT頁面置換算法模擬程序:從鍵盤輸入訪問串。計算OPT算法在不同內存頁框數時的缺頁數和缺頁率。要求程序模擬駐留集變化過程,即能模擬頁框裝入與釋放過程。 2.2任務要求 輸入串長度作為總頁框數目,補充程序完成OPT算法。 2.3算法思路 OPT算…

【Tlias智能學習輔助系統】04 部門管理 刪除 和 新增

Tlias智能學習輔助系統 04 部門管理 刪除 和 新增 刪除部門APIDeptController.javaDeptService.javaDeptServiceImpl.javaDeptMapper.java前端聯調 新增部門API有一步簡化DeptController.javaDeptService.javaDeptServiceImpl.javaDeptMapper.java前端聯調 刪除部門API 請求路徑…

31-ESP32-S3-WIFI篇-02 Event Group (事件標記組)

ESP32-S3-WIFI 事件標記組 介紹 在ESP32-S3的WiFi驅動程序中&#xff0c;事件標記組&#xff08;Event Group&#xff09;是一個非常重要的概念。它是FreeRTOS中的一種同步機制&#xff0c;用于在任務之間傳遞和同步事件。在WiFi驅動程序中&#xff0c;我們使用事件標記組來通…

Go 語言字符串及 strings 和 strconv 包

在 Go 語言編程中&#xff0c;字符串是最基本、最常用的數據類型之一。無論是處理用戶輸入、讀取文件內容&#xff0c;還是生成輸出&#xff0c;字符串操作無處不在。為了方便開發者對字符串進行各種操作&#xff0c;Go 語言提供了強大的 strings 包和 strconv 包。strings 包包…