每日兩道leetcode

345. 反轉字符串中的元音字母 - 力扣(LeetCode)

題目

給你一個字符串?s?,僅反轉字符串中的所有元音字母,并返回結果字符串。

元音字母包括?'a''e''i''o''u',且可能以大小寫兩種形式出現不止一次。

示例 1:

輸入:s = "IceCreAm"

輸出:"AceCreIm"

解釋:

s?中的元音是?['I', 'e', 'e', 'A']。反轉這些元音,s?變為?"AceCreIm".

示例 2:

輸入:s = "leetcode"

輸出:"leotcede"

提示:

  • 1 <= s.length <= 3 * 105
  • s?由?可打印的 ASCII?字符組成

思路

  1. 兩種思路,一種是將找到的元音字母入棧,再重新遍歷遇到元音字母就彈棧修改;另一種是使用swap函數,利用首尾指針,將兩個元音直接交換。(速度快一點,少一遍遍歷)

代碼實現

class Solution {
public:string reverseVowels(string s) {int i = 0, n = s.length()-1;unordered_map<char, int> vocal= {{'a',1}, {'e',1}, {'i',1}, {'o',1}, {'u',1}, {'A',1}, {'E',1}, {'I',1}, {'O',1}, {'U',1}};while(i <= n) {if(vocal.count(s[i]) && vocal.count(s[n])) {swap(s[i], s[n]);i++;n--;}else if(vocal.count(s[i])) n--;else if(vocal.count(s[n])) i++;else {i++;n--;}}return s;}
};

復雜度分析

  • 時間復雜度:哈希查表的時間復雜度是O(1)的,經搜索swap在string和vector上的時間復雜度也是近似O(1)的,所以總的時間復雜度就是遍歷復雜度,最壞時間復雜度近似為O(n)。
  • 空間復雜度:存了元音字符的哈希集合O(1)。

函數學習

  • unordered_map的列表初始化方法unordered_map umap = {{key1,value1}, {key2, value2}};
  • swap(a, b)——針對元素的交換時間是O(1)的,針對數組的交換時間是O(n)的,數組交換的過程中會導致迭代器失效,需注意。

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

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

相關文章

【SQL 基礎入門 1. -- SQL 基本語法詳解及舉例】

文章目錄 SQL 數據庫創建及使用刪除數據庫SQL 查看數據空中有哪些表格SQL 創建表格SQL 修改表格列數據格式SQL 表格插入數據SQL 查看表格類型組成SQL 查看表格中的內容 SQL 查詢語句SQL 查看指定列SQL 選擇指定列SQL 按指定列進行升序排序SQL 平均值/求和/最大值/最小值 SQL 數…

PostgreSQL 分區表——范圍分區SQL實踐

PostgreSQL 分區表——范圍分區SQL實踐 1、環境準備1-1、新增原始表1-2、執行腳本新增2400w行1-3、創建pg分區表-分區鍵為創建時間1-4、創建24年所有分區1-5、設置默認分區&#xff08;兜底用&#xff09;1-6、遷移數據1-7、創建分區表索引 2、SQL增刪改查測試2-1、查詢速度對比…

Apache Flink 深度解析:流處理引擎的核心原理與生產實踐指南

Apache Flink 深度解析&#xff1a;流處理引擎的核心原理與生產實踐指南 引言&#xff1a;實時計算的范式革命 2023年雙十一期間&#xff0c;某頭部電商平臺基于Flink構建的實時風控系統成功攔截了每秒超過120萬次的異常交易請求。這背后是Apache Flink作為第四代計算引擎的強…

【Java學習筆記】選擇結構

選擇結構 內容結構 一、順序結構 二、分支控制 &#xff08;1&#xff09;單分支 &#xff08;2&#xff09;雙分支 &#xff08;3&#xff09;多分支 &#xff08;4&#xff09;嵌套分支 &#xff08;5&#xff09;switch 分支結構 三、switch和if的比較 一、順序結構…

03_JavaScript

文章目錄 一、概述1.1、JavaScript簡介1.2、JavaScript組成部分1.3、為什么要學習JavaScript1.4、學習的目的1.5、JavaScript與Java的關系 二、使用位置及運行說明2.1、使用位置2.2、如何運行 三、JavaScript基礎語法3.1、變量3.2、運算符3.3、控制流程3.3.1、分支結構3.3.2、循…

PySide6 GUI 學習筆記——常用類及控件使用方法(常用類矩陣QRect)

文章目錄 一、構造與初始化方法二、坐標與尺寸獲取三、坐標與尺寸設置四、幾何運算方法五、移動與調整方法六、狀態判斷方法七、類型轉換方法八、操作符重載九、靜態方法十、特殊方法附錄方法速查表注意的問題交集和并集圖解 &#x1f4d8; PySide6.QtCore.QRect 使用整數精度定…

AI 開發入門之 RAG 技術

目錄 一、從一個簡單的問題開始二、語言模型“閉卷考試”的困境三、RAG 是什么—LLM 的現實世界“外掛”四、RAG 的七步流程第一步&#xff1a;加載數據&#xff08;Load&#xff09;第二步&#xff1a;切分文本&#xff08;Chunking&#xff09;第三步&#xff1a;向量化&…

解決yarn install 報錯 error \node_modules\electron: Command failed.

在電腦重裝系統后,重新安裝項目依賴,遇到這一報錯 完整報錯信息如下: error D:\xxxxx\xxxxxx\node_modules\electron: Command failed. Exit code: 1 Command: node install.js Arguments: Directory: D:\xxxxx\xxxxx\node_modules\electron Output: HTTPError: Response cod…

2025年3月電子學會青少年機器人技術(五級)等級考試試卷-理論綜合

青少年機器人技術等級考試理論綜合試卷&#xff08;五級&#xff09; 分數&#xff1a;100 題數&#xff1a;30 一、單選題(共20題&#xff0c;共80分) 1. 2025年初&#xff0c;中國科技初創公司深度求索在大模型領域迅速崛起&#xff0c;其開源的大模型成為全球AI領域的焦…

23種設計模式-行為型模式之模版方法模式(Java版本)

Java 模板方法模式&#xff08;Template Method Pattern&#xff09;詳解 &#x1f9e0; 什么是模板方法模式&#xff1f; 模板方法模式是一種行為型設計模式&#xff0c;在一個方法中定義一個操作中的算法骨架&#xff0c;而將一些步驟延遲到子類中。模板方法使得子類可以在…

長城杯鐵人三項初賽-REVERSE復現

前言 記錄記錄 1.LoginToMe int __fastcall main(int argc, const char **argv, const char **envp) {unsigned int v3; // eaxchar s[96]; // [rsp10h] [rbp-70h] BYREFint v6; // [rsp70h] [rbp-10h]int v7; // [rsp78h] [rbp-8h]int i; // [rsp7Ch] [rbp-4h]memset(s, 0, s…

DNS實驗

DNS原理 客戶端發起請求&#xff1a;客戶端向本地 DNS 服務器發送域名解析請求&#xff0c;這是流程的起始點。本地 DNS 服務器查詢根域名服務器&#xff1a;若本地 DNS 服務器緩存中無對應記錄&#xff0c;它向根域名服務器發起查詢&#xff0c;根域名服務器是 DNS 系統頂層&a…

SQLMesh 通知系統深度解析:構建自動化監控體系

SQLMesh 是一款強大的數據編排工具&#xff0c;其內置的靈活通知系統可顯著提升團隊協作效率。本文將系統解讀 SQLMesh 的通知機制&#xff0c;涵蓋配置方法、事件觸發邏輯及高級定制技巧。 一、通知系統的核心架構 1. 通知目標&#xff08;Notification Targets&#xff09; …

精益數據分析(20/126):解析經典數據分析框架,助力創業增長

精益數據分析&#xff08;20/126&#xff09;&#xff1a;解析經典數據分析框架&#xff0c;助力創業增長 在創業和數據分析的學習道路上&#xff0c;每一次深入探索都可能為我們帶來新的啟發。今天&#xff0c;依舊帶著和大家共同進步的想法&#xff0c;我們一起深入研讀《精…

【OSG學習筆記】Day 8: 紋理貼圖——賦予模型細節

在 OSG(Open Scene Graph)中,紋理貼圖是為模型添加細節的關鍵技術,主要涉及紋理加載、UV 映射和多重紋理疊加三部分。 基礎理論 紋理加載 紋理的作用,就是將2D圖像映射到3D模型表面,增強視覺細節。 紋理類型與格式支持: OSG 支持多種圖像格式,包括常見的 .jpg/.jpe…

基于事件驅動的云原生后端架構設計:從理念到落地

??個人主頁??:慌ZHANG-CSDN博客 ????期待您的關注 ???? 一、引言:微服務之后,事件驅動正在成為新范式 隨著業務復雜度的提升,傳統同步式微服務調用模式逐漸暴露出瓶頸:服務間耦合度高、并發能力有限、出錯鏈路復雜。而在互聯網業務、金融交易、物聯網等場景中…

vue3:十一、主頁面布局(修改頂部導航欄樣式-右側:用戶信息+退出登錄+全屏顯示)

一、效果 完成效果,增加頂部導航欄,右側用戶信息(其中個人中心需要后續進行頁面開發,這里只寫了退出登錄功能),以及全屏功能 二、搭建并引入右側組件 將右側內容封裝到單獨的組件,直接引入(像左側導航條等內容也是可以做成這種形式) 1、新建右側組件的頁面 在layout中…

沁恒CHV203中斷嵌套導致修改線程棧-韋東山

調試專題bug實例 2025年01月09日20點場 處理辦法1&#xff1a;就是關閉中斷嵌套 處理辦法2&#xff1a; 使用原來的棧

Qt本地化 - installTranslator不生效

bool QCoreApplication::installTranslator(QTranslator *translationFile)注意這里輸入的是QTranslator對象指針&#xff0c;如果QTranslator是局部變量&#xff0c;一旦離開其作用域就會導致翻譯失效 錯誤代碼示范&#xff1a; void ApplyTranslator(const QString& qmf…

Qt UDP組播實現與調試指南

在Qt中使用UDP組播(Multicast)可以實現高效的一對多網絡通信。以下是關鍵步驟和示例代碼: 一、UDP組播核心機制 組播地址:使用D類地址(224.0.0.0 - 239.255.255.255)TTL設置:控制數據包傳播范圍(默認1,同一網段)網絡接口:指定發送/接收的物理接口二、發送端實現 /…