LeetCode 刷題 [C++] 第763題.劃分字母區間

題目描述

給你一個字符串 s 。我們要把這個字符串劃分為盡可能多的片段,同一字母最多出現在一個片段中。
注意,劃分結果需要滿足:將所有劃分結果按順序連接,得到的字符串仍然是 s 。
返回一個表示每個字符串片段的長度的列表。
在這里插入圖片描述

題目分析

  1. 由于題目中規定同一字母最多出現在一個片段中,因此,需要找到字符串中出現的每個字母的最后一次出現的下標位置。對字符串進行一次遍歷即可得到,并存儲在數組last_pos中。
  2. 然后可以使用貪心算法思想對字符串劃分出盡可能多的片段:
    • 從左至右依次訪問字符串元素,同時維護當前片段的開始下標start和結束下標end,初始時 start=end=0。
    • 對于每個被訪問到的字母char,從last_pos中獲取當前字母的最后一次出現的下標位置,如果其最后出現的位置大于當前片段邊界end,則更新end,否則不更新,來確保每個字母在同一個片段里。
    • 當訪問到下標等于當前片段邊界end時,當前片段訪問結束,當前片段的下標范圍是 [start,end],長度為end?start+1,將當前片段的長度添加到返回值數組中,然后更新下一個片段的start=end+1,繼續處理下一個片段。
    • 重復上述過程,直到方問完字符串的全部元素。

Code

class Solution {
public:vector<int> partitionLabels(string s) {int last_pos[26];int len = s.size();for (int i = 0; i < len; ++i) {last_pos[s[i] - 'a'] = i;}vector<int> ans;int start = 0,end = 0;for (int i = 0; i < len; ++i) {if (end < last_pos[s[i] - 'a']) {end = last_pos[s[i] - 'a'];}if (end == i) {ans.emplace_back(end - start + 1);start = end + 1;}}return ans;}
};

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

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

相關文章

看看技術大佬是如何把ls命令玩到飛起

關注公眾號&#xff1a;“DevOps實戰派”&#xff0c;獲取更多DevOps和運維的精彩內容。 Linux中一個基本命令是ls&#xff0c;沒有這個命令&#xff0c;我們會在瀏覽目錄條目時會遇到困難。 ls命令用于列出文件和目錄&#xff0c;默認上&#xff0c;它會列出當前目錄的內容。…

Synchronized方法鎖、對象鎖、類鎖區別

synchronized&#xff0c;這個東西我們一般稱之為”同步鎖“&#xff0c;他在修飾代碼塊的時候需要傳入一個引用對象作為“鎖”的對象。 在修飾方法的時候&#xff0c;默認是當前對象作為鎖的對象在修飾類時&#xff0c;默認是當前類的Class對象作為所的對象 故存在著方法鎖、…

【MySQL】事務管理 -- 詳解

一、前言 CURD 不加控制&#xff0c;會有什么問題&#xff1f; CURD 滿足什么屬性&#xff0c;能解決上述問題&#xff1f; 買票的過程得是原子的。買票應該不能受互相的影響。買完票應該要永久有效。買前和買后都要是確定的狀態。 什么是事務&#xff1f; 事務就是一組 DML…

網絡編程作業day3

項目作業1&#xff1a;TCP機械臂測試 客戶端操作代碼&#xff1a; /*機械臂客戶端控制代碼*/ #include <myhead.h>#define SER_IP "192.168.125.176" //機械臂服務器IP地址 #define SER_PORT 8888 //機械臂服務器端口號 #define CLI_IP "…

Vue 項目重復點擊菜單刷新當前頁面

需求&#xff1a;“在當前頁面點擊當前頁面對應的菜單時&#xff0c;也能刷新頁面。” 由于 Vue 項目的路由機制是路由不變的情況下&#xff0c;對應的組件是不重新渲染的。所以重復點擊菜單不會改變路由&#xff0c;然后頁面就無法刷新了。 方案一 在vue項目中&#xff0c;…

深入了解 JavaScript 混淆加密和環境檢測

JavaScript混淆加密是一種通過修改代碼結構和命名約定來增加代碼的復雜性&#xff0c;使其難以被理解和逆向工程的技術。在這篇文章中&#xff0c;我們將深入探討JS混淆加密的一些邏輯&#xff0c;并介紹如何通過環境檢測來提高代碼的安全性。我們將使用案例代碼演示這些概念。…

List集合按中文拼音排序,或按自己想要順序的調整排序

1.你要按拼音排序&#xff08;字母同音依次比后面字母&#xff09; //集合按中文拼音排序Collections.sort(collect,new Comparator() {Overridepublic int compare(Object o1, Object o2) {return chineseCompare(o1,o2);}});//排序方法private static int chineseCompare(Obj…

【java】使用七牛云上傳文件

注冊七牛云 - 小王小王ii - 博客園 (cnblogs.com) 1.依賴 <dependencies><dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk</artifactId><version>7.2.7</version></dependency><dependency>…

一些Springboot有用的配置:application.properties、xml訪問mybatis數據庫

application.properties #驅動類名稱 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver #數據庫連接的url spring.datasource.urljdbc:mysql://localhost:3306/tlias #連接數據庫的用戶名 spring.datasource.usernameroot #連接數據庫的密碼 spring.datasource.p…

STM32用標準庫編寫按鍵控制LED燈的proteus仿真

首先打開proteus仿真軟件&#xff0c;繪制電路圖&#xff1a; 或是下載我已經建立好的工程修改&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/1Nx5p3Tif6eHBIVkcPfsj9w?pwd1234 提取碼&#xff1a;1234 第一步復制整個工程文件夾&#xff0c;就不用重新配置的辛苦…

論文閱讀:2017MobileNet V1谷歌輕量化卷積神經網絡

拓展&#xff1a;賈揚清&#xff1a;深度學習框架caffe&#xff08;Convolutional Architecture for Fast Feature Embedding&#xff09; 主要貢獻&#xff1a; 深度可分離卷積&#xff08;Depthwise separable convolution&#xff09;逐點卷積&#xff08;Pointwise convo…

C++筆試題(選擇+編程)

個人主頁&#xff1a;Lei寶啊 愿所有美好如期而遇 選擇題 請找出下面程序中有哪些錯誤&#xff08;&#xff09; int main() {int i 10;int j 1;const int *p1;//(1)int const *p2 &i; //(2)p2 &j;//(3)int *const p3 &i;//(4)*p3 20;//(5)*p2 30;//(6…

LeetCode 刷題 [C++] 第279題.完全平方數

題目描述 給你一個整數 n &#xff0c;返回 和為 n 的完全平方數的最少數量 。 完全平方數是一個整數&#xff0c;其值等于另一個整數的平方&#xff1b;換句話說&#xff0c;其值等于一個整數自乘的積。例如&#xff0c;1、4、9 和 16 都是完全平方數&#xff0c;而 3 和 11…

#LLM入門|Prompt#2.7_檢查結果_Check_Outputs

引領你了解 如何評估系統生成的輸出。確保在向用戶展示輸出之前&#xff0c;對其質量、相關性和安全性進行嚴格的檢查&#xff0c;以保證我們提供的反饋是準確和適用的。如何運用審查(Moderation) API 來對輸出進行評估如何通過額外的 Prompt 提升模型在展示輸出之前的質量評估…

redis運維

1.備份redis配置文件 cp /etc/redis.conf /etc/redis.conf.bak 2.將redis中不要的注釋和空行刪除 sed -i /^#/d; /^$/d /etc/redis.conf 3.redis配置文件 bing 0.0.0.0 &#xff1a;綁定本機所有網卡 daemonize yes&#xff1a;設置后臺運行 requirepass redispwd…

k8s初始化錯誤

報錯詳情&#xff1a; you can check the kubelet logs for further clues by running: ‘journalctl -u kubelet’ Alternatively, there might be issues with your Kubernetes configuration files or maybe the necessary ports are not opened. Check the status of …

題目 1434: 藍橋杯歷屆試題-回文數字

題目描述: 觀察數字&#xff1a;12321&#xff0c;123321 都有一個共同的特征&#xff0c;無論從左到右讀還是從右向左讀&#xff0c;都是相同的。這樣的數字叫做&#xff1a;回文數字。 本題要求你找到一些5位或6位的十進制數字。滿足如下要求&#xff1a; 該數字的各個數位…

rust多個mod文件引用和文件夾mod使用注意事項

如果mod文件都在同一級目錄&#xff0c;則直接使用就可以&#xff0c;因為rust文件都是一個隱藏的mod&#xff0c;但是如果mod文件在另外一個目錄下面&#xff0c;就需要在目錄下面聲明一個mod.rs文件&#xff0c;這樣才能將那個目錄識別為一個mod&#xff0c;可以在mod.rs里面…

鴻蒙App開發新思路:小程序轉App

國家與國家之間錯綜復雜&#xff0c;在谷歌的安卓操作系統“斷供”后&#xff0c;鴻蒙系統的市場化&獨立化的道路便顯而易見了。 2024年1月18日&#xff0c;華為宣布&#xff0c;不再兼容安卓的“純血鴻蒙”--HarmonyOS NEXT鴻蒙星河版最終面世&#xff0c;并與2024年Q4正…

如何在阿里云/騰訊云Ubuntu服務器上安裝和配置GNOME桌面環境?

在Ubuntu服務器上安裝和配置GNOME桌面環境&#xff0c;首先需要確保已經安裝了必要的軟件和環境。以下是詳細的安裝和配置步驟&#xff1a; 安裝GNOME桌面環境&#xff1a; 使用命令sudo apt-get install gnome-shell來安裝GNOME桌面窗口管理程序。接著安裝gnome-panel、gnome-…