LeetCode 777.在LR字符串中交換相鄰字符

在一個由 ‘L’ , ‘R’ 和 ‘X’ 三個字符組成的字符串(例如"RXXLRXRXL")中進行移動操作。一次移動操作指用一個 “LX” 替換一個 “XL”,或者用一個 “XR” 替換一個 “RX”。現給定起始字符串 start 和結束字符串 result,請編寫代碼,當且僅當存在一系列移動操作使得 start 可以轉換成 result 時, 返回 True。

示例 1:

輸入:start = “RXXLRXRXL”, result = “XRLXXRRLX”
輸出:true
解釋:通過以下步驟我們可以將 start 轉化為 result:
RXXLRXRXL ->
XRXLRXRXL ->
XRLXRXRXL ->
XRLXXRRXL ->
XRLXXRRLX
示例 2:

輸入:start = “X”, result = “L”
輸出:false

提示:

1 <= start.length <= 104^44
start.length == result.length
start 和 result 都只包含 ‘L’, ‘R’ 或 ‘X’。

start和result去掉X字符后,剩余部分應該相同,L字符只能往左移動,R字符只能往右移動,雙指針遍歷,遇到不滿足的條件返回false即可:

class Solution {
public:bool canTransform(string start, string result) {int n = start.size();int startIdx = 0;int resultIdx = 0;while (startIdx < n && resultIdx < n) {if (start[startIdx] == 'X') {++startIdx;continue;}if (result[resultIdx] == 'X') {++resultIdx;continue;}// 字符不同 ||// 字符是L,但向右移動 ||// 字符是R,但向左移動if (start[startIdx] != result[resultIdx] ||startIdx < resultIdx && start[startIdx] == 'L' ||startIdx > resultIdx && start[startIdx] == 'R') {return false;}++startIdx;++resultIdx;}// 以上循環結束時,可能start沒有遍歷完,或result沒有遍歷完// 如果start沒有遍歷完,且未遍歷部分有非X字符,說明result里的非X字符少了while (startIdx < n) {if (start[startIdx] != 'X') {return false;}++startIdx;}// 如果result沒有遍歷完,且未遍歷部分有非X字符,說明result里的非X字符多了while (resultIdx < n) {if (result[resultIdx] != 'X') {return false;}++resultIdx;}return true;}
};

如果start的長度為n,則此算法時間復雜度為O(n),空間復雜度為O(1)。

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

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

相關文章

RK-Android15-WIFI白名單功能實現

實現WIFI白名單功能 。 三個模式: 1、默認模式:允許搜索所有的WIFI顯示、搜索出來 ; 2、禁用模式:允許所有WIFI顯示,能夠搜索出來 ;3、白名單模式:允許指定WIFI名單顯示,被搜索出來 文章目錄 前言-需求 一、參考資料 二、核心修改文件和實現方式 1、修改文件 疑問思考 …

Maven + JUnit:Java單元測試的堅實組合

Maven JUnit&#xff1a;Java單元測試的堅實組合Maven JUnit&#xff1a;Java單元測試的堅實組合一、什么是軟件測試&#xff1f;二、測試的維度&#xff1a;階段與方法&#xff08;一&#xff09;測試的四大階段&#xff08;二&#xff09;測試的三大方法三、main方法測試與…

FFMPEG 10BIT下 Intel b570 qsv 硬解AV1,H265視頻編碼測試

上10bitffmpeg 8.0 b570最新驅動 &#xff0c;CPU 12100F 顯卡 Intel b570 ffmpeg -hwaccel_output_format qsv -i "XXX.mkv" -vf "formatp010le" -c:v hevc_qsv -global_quality 19 -quality best -rc_mode ICQ -preset veryslow -g 120 -refs 5 -b…

SQL分類詳解:掌握DQL、DML、DDL等數據庫語言類型

如果你是一名數據庫運維工程師&#xff0c;或者正在學習數據庫技術&#xff0c;那么理解SQL的不同類型是非常重要的。讓我們一起看看SQL到底有哪些種類&#xff0c;以及它們各自的作用。 1. 什么是SQL&#xff1f; SQL&#xff08;Structured Query Language&#xff09;是一種…

[特殊字符] 預告!我正在開發一款讓自動化操作變得「像呼吸一樣自然」的AI神器

各位技術愛好者和創作者朋友們&#xff0c;我要解決一個行業痛點&#xff01;在上一個項目中&#xff08;&#x1f525; 重磅預告&#xff01;我要用AI開發一個自媒體神器&#xff0c;徹底解決創作者的7大痛點&#xff01;&#xff09;&#xff0c;我本來雄心勃勃地打算直接用R…

加密軟件哪個好用?加密軟件-為數據共享提供安全保障

企業與合作伙伴協作時需共享大量數據&#xff0c;若缺乏保護&#xff0c;數據可能被非法獲取&#xff0c;影響合作信任&#xff0c;甚至引發商業糾紛。加密軟件可確保共享數據僅授權方可見&#xff0c;為數據共享提供安全保障&#xff0c;推動合作順利開展。?1.固信軟件固信加…

FPGA復位

1:能不復位盡量不要復位&#xff0c;減少邏輯扇出數&#xff1a;比如打拍信號。2:xilinx的FPGA推薦高復位&#xff0c;ATERAL的FPGA推薦低復位。3:盡量使用異步復位&#xff1a;大多數廠商目標庫內的觸發器都只有異步復位端口&#xff0c;采用同步復位需消耗較多邏輯資源。一&a…

Cursor 教我學 Python

文章目錄1. 寫在最前面2. Python 語法2.1 yield2.1.1 yield 和 return 的區別2.1.2 golang 中實現 yield 語法3. aiohttp 庫3.1 原始寫法3.2 修改寫法3.2 耗時對比分析4. 碎碎念5. 參考資料1. 寫在最前面 最近加了很多 Python Coding 的任務&#xff0c;雖然在 AI 加持下能夠順…

Ollama:本地大語言模型部署和使用詳解

1.什么是Ollama&#xff1f; Ollama是一個開源的大語言模型管理工具&#xff0c;具有以下特點&#xff1a; 簡單易用&#xff1a;提供簡單的命令行接口本地部署&#xff1a;模型運行在本地&#xff0c;保護數據隱私跨平臺支持&#xff1a;支持Windows、macOS、Linux豐富的模型…

云計算學習100天-第41天 -普羅米修斯2

目錄 五、添加被監控端 1、在web1[192.168.88.100]上部署node exporter 2、在Prometheus服務器上添加監控節點 3、瀏覽器查看添加結果 六、Grafana的部署 概述 部署步驟 七、監控MySQL數據庫 1、配置MySQL 2、配置mysql exporter 3、配置prometheus監控mysql 五、添…

集成電路學習:什么是SVM支持向量機

SVM:支持向量機 SVM,即支持向量機(Support Vector Machine),是一種常用的機器學習算法,特別適用于分類和回歸問題。以下是對SVM的詳細解析: 一、SVM的基本原理 SVM的基本思想是在特征空間中尋找一個最優的超平面,使得不同類別的樣本能夠被最大化地分開。這個最優…

盲盒抽谷機小程序開發:如何用3D技術重構沉浸式體驗?

在盲盒經濟中&#xff0c;“沉浸感”是提升用戶停留時長與轉化率的核心武器。某品牌通過3D扭蛋機旋轉、卡牌翻轉特效&#xff0c;使用戶停留時長從15秒延長至45秒&#xff0c;轉化率提升25%&#xff1b;另一品牌上線AR試戴功能后&#xff0c;單次抽谷時長延長至2分鐘&#xff0…

集采與反腐雙重壓力下,醫藥銷售的破局之道:從資源依賴到價值重構

在醫藥行業進入集采常態化與反腐縱深推進的新階段&#xff0c;“資源匱乏”“拜訪受阻” 成為縈繞在眾多醫藥銷售人員心頭的難題。當傳統的資金投入、學術活動等資源型打法逐漸失效&#xff0c;行業正面臨一場從 “資源驅動” 到 “價值驅動” 的深刻變革。那些曾在市場中創造過…

Elasticsearch常用命令(未完)

網上針對es常用命令好多都是寫的感覺非常復雜難以理解&#xff0c;所以我還是自己整理了一下相關的常用命令。 對es輸入指令可以用很多種方法比如用es的谷歌瀏覽器插件&#xff0c;亦或者postman&#xff0c;我個人比較喜歡用postman比較簡單直接 1.刪除指定索引下的所有數據…

【系統架構設計(七)】 需求工程之:面向對象需求分析方法:統一建模語言(UML)(下)

文章目錄一、用例圖1. 用例模型建立的系統化流程第一步&#xff1a;識別參與者第二步&#xff1a;合并需求獲得用例第三步&#xff1a;細化用例描述第四步&#xff1a;調整用例模型&#xff08;可選步驟&#xff09;2. 用例之間的關系類型二、類圖與對象圖概念類之間的關系三、…

數據結構——樹(04二叉樹,二叉搜索樹專項,代碼練習)

文章目錄一、概念二、構造1.1先序序列 構造BST1.2中序序列 轉換為BST1.3中序序列鏈表轉換為BST1.4BST轉換為中序序列鏈表1.7BST的序列化和反序列化1.6BST的種數二、BST的增刪改查2.1驗證是否為BST2.2查找值為val的節點2.3插入一個值為val的節點2.4刪除一個值為val的節點2.5恢復…

ArkUI核心功能組件使用

1.Tabs&#xff08;選項卡&#xff09; 1.1 概述 Tabs組件的頁面組成包含兩個部分&#xff0c;分別是TabContent和TabBar。TabContent是內容頁&#xff0c;TabBar是導航頁簽欄。 TabBar是導航頁簽欄&#xff0c;頁面結構如下圖所示&#xff0c;根據不同的導航類型&#xff0c;布…

Qt5 多媒體大綱

一、入門準備 基礎知識 熟悉 Qt 的信號槽機制、事件循環 掌握 .pro 工程文件配置&#xff08;QT multimedia multimediawidgets&#xff09; 熟悉常見的音視頻格式與編解碼器基礎 環境配置 Qt Creator Qt 5.x 確認安裝了 multimedia 模塊與 mediaservice 插件 熟悉調試…

音頻數據集采樣率選擇建議

你好&#xff01;這是一個非常棒且非常重要的問題&#xff0c;在音頻機器學習項目中&#xff0c;選擇合適的采樣率是平衡計算效率和模型性能的關鍵。 直接回答你的問題&#xff1a;將音頻下采樣到 800 Hz 對于絕大多數音頻分類任務來說都太低了&#xff0c;幾乎肯定會丟失大量關…

深度學習系列 | Seq2Seq端到端翻譯模型

一、通俗總結Seq2Seq 就像一個 “序列轉換器”&#xff1a;先把輸入的一段話 “壓縮成一個核心意思”&#xff0c;再根據這個意思 “一句句生成另一段話”&#xff0c;能搞定翻譯、聽寫這類 “輸入輸出不一樣長” 的任務&#xff0c;但太長的內容可能記不全&#xff0c;還容易越…