国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

LeetCode 2337. Move Pieces to Obtain a String【字符串,雙指針】1693

這篇具有很好參考價值的文章主要介紹了LeetCode 2337. Move Pieces to Obtain a String【字符串,雙指針】1693。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本文屬于「征服LeetCode」系列文章之一,這一系列正式開始于2021/08/12。由于LeetCode上部分題目有鎖,本系列將至少持續(xù)到刷完所有無鎖題之日為止;由于LeetCode還在不斷地創(chuàng)建新題,本系列的終止日期可能是永遠。在這一系列刷題文章中,我不僅會講解多種解題思路及其優(yōu)化,還會用多種編程語言實現(xiàn)題解,涉及到通用解法時更將歸納總結(jié)出相應的算法模板。

為了方便在PC上運行調(diào)試、分享代碼文件,我還建立了相關(guān)的倉庫:https://github.com/memcpy0/LeetCode-Conquest。在這一倉庫中,你不僅可以看到LeetCode原題鏈接、題解代碼、題解文章鏈接、同類題目歸納、通用解法總結(jié)等,還可以看到原題出現(xiàn)頻率和相關(guān)企業(yè)等重要信息。如果有其他優(yōu)選題解,還可以一同分享給他人。

由于本系列文章的內(nèi)容隨時可能發(fā)生更新變動,歡迎關(guān)注和收藏征服LeetCode系列文章目錄一文以作備忘。

給你兩個字符串?start?和?target?,長度均為?n?。每個字符串??由字符?'L'、'R'?和?'_'?組成,其中:

  • 字符?'L'?和?'R'?表示片段,其中片段?'L'?只有在其左側(cè)直接存在一個?空位?時才能向??移動,而片段?'R'?只有在其右側(cè)直接存在一個?空位?時才能向??移動。
  • 字符?'_'?表示可以被?任意?'L'?或?'R'?片段占據(jù)的空位。

如果在移動字符串?start?中的片段任意次之后可以得到字符串?target?,返回?true?;否則,返回?false?。

示例 1:

輸入:start = "_L__R__R_", target = "L______RR"
輸出:true
解釋:可以從字符串 start 獲得 target ,需要進行下面的移動:
- 將第一個片段向左移動一步,字符串現(xiàn)在變?yōu)?"L___R__R_" 。
- 將最后一個片段向右移動一步,字符串現(xiàn)在變?yōu)?"L___R___R" 。
- 將第二個片段向右移動三步,字符串現(xiàn)在變?yōu)?"L______RR" 。
可以從字符串 start 得到 target ,所以返回 true 。

示例 2:

輸入:start = "R_L_", target = "__LR"
輸出:false
解釋:字符串 start 中的 'R' 片段可以向右移動一步得到 "_RL_" 。
但是,在這一步之后,不存在可以移動的片段,所以無法從字符串 start 得到 target 。

示例 3:

輸入:start = "_R", target = "R_"
輸出:false
解釋:字符串 start 中的片段只能向右移動,所以無法從字符串 start 得到 target 。

提示:

  • n == start.length == target.length
  • 1 <= n <= 10^5
  • start?和?target?由字符?'L'、'R'?和?'_'?組成

解法 雙指針

首先,無論怎么移動,由于 L L L R R R 無法互相穿過對方,那么去掉 _ 后的剩余字符應該是相同的,否則返回 f a l s e false false 。然后用雙指針從左向右遍歷 start \textit{start} start target \textit{target} target ,分類討論:

  • 如果當前字符為 L L L i < j i<j i<j ,由于 L L L 由于無法向右移動,返回 f a l s e false false ;
  • 如果當前字符為 R R R i > j i>j i>j ,由于 R R R 由于無法向左移動,返回 f a l s e false false 。
  • 遍歷完,若中途沒有返回 f a l s e false false 就返回 t r u e true true 。
class Solution {
public:
    bool canChange(string start, string target) {
        int n = start.size();
        int i = 0;
        for (int j = 0; j < n; ++j) {
            if (target[j] == '_') continue;
            while (i < n && start[i] == '_') ++i;
            if (i == n || 
                start[i] != target[j] || // 當前字符不同
                i != j && (start[i] == 'L') == (i < j)) 
                return false; // 順序不符合
            ++i; 
        }
        while (i < n)
            if (start[i++] != '_') return false;
        return true;
    }
};

復雜度分析:文章來源地址http://www.zghlxwxcb.cn/news/detail-663384.html

  • 時間復雜度: O ( n ) \mathcal{O}(n) O(n) ,其中 n n n start \textit{start} start 的長度。
  • 空間復雜度: O ( 1 ) \mathcal{O}(1) O(1) 。

到了這里,關(guān)于LeetCode 2337. Move Pieces to Obtain a String【字符串,雙指針】1693的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 【Python小技巧】df轉(zhuǎn)字符串用df.to_string(),字符串轉(zhuǎn)換回DataFrame怎么辦?

    平常我們使用pandas,一般使用的是DataFrame和Series,但個別交換數(shù)據(jù)的時候,只能使用字符串,我們需要將df轉(zhuǎn)為字符串輸出。但交換完的數(shù)據(jù),我們又需要將字符串再轉(zhuǎn)回DataFrame格式,這個怎么辦呢? 下文我們就來看看,如何處理?文中df代表DataFrame數(shù)據(jù)。 df轉(zhuǎn)為字符串 dfs

    2024年01月24日
    瀏覽(31)
  • LeetCode 2496. Maximum Value of a String in an Array【字符串,數(shù)組】簡單

    本文屬于「征服LeetCode」系列文章之一,這一系列正式開始于2021/08/12。由于LeetCode上部分題目有鎖,本系列將至少持續(xù)到刷完所有無鎖題之日為止;由于LeetCode還在不斷地創(chuàng)建新題,本系列的終止日期可能是永遠。在這一系列刷題文章中,我不僅會講解多種解題思路及其優(yōu)化,

    2024年02月11日
    瀏覽(17)
  • 字符串分割(split),將字符串按照指定字符進行分割。split(String regex)和split(String regex, int limit)

    字符串分割(split),將字符串按照指定字符進行分割。split(String regex)和split(String regex, int limit)

    一、 split(String regex) 字符串分割,將字符串按照指定字符進行分割,返回的是一個字符串數(shù)組。 原理:參數(shù)名稱是 regex 表示的是以某個字符串進行字符分割。 實例1:根據(jù)空格切割 輸出結(jié)果: 實例2:根據(jù)特殊字符進行“.”分割 輸出結(jié)果: 二、 split(String regex, int limit) 字符

    2024年02月11日
    瀏覽(45)
  • String字符串

    String字符串

    直接創(chuàng)建 代碼簡單,節(jié)約內(nèi)存 使用new創(chuàng)建 有new就會開辟一個新的小空間,地址值不同不會復用浪費空間 案例:用戶登錄 遍歷字符串 統(tǒng)計字符個數(shù) 拼接字符串 字符串反轉(zhuǎn) 金額轉(zhuǎn)換 手機號屏蔽 敏感詞替換 使用場景:1.字符串拼接。2、字符串反轉(zhuǎn) 常用方法練習 對稱字符串

    2024年02月16日
    瀏覽(22)
  • String(字符串)

    String(字符串)

    java.lang.String類代表字符串,Java程序中的所有字符串文字(例如“abc”)都為此類的對象。 字符串的內(nèi)容是不會發(fā)生改變的,它的對象在創(chuàng)建后不能被更改。 String是Java定義好的一個類。定義在java.lang包中,所以使用的時候不需要導包。 Java程序中的所有字符串文字都被實為此

    2024年02月13日
    瀏覽(32)
  • redis—String字符串

    redis—String字符串

    目錄 前言 1.字符串數(shù)據(jù)類型 2.常見命令 3.典型應用場景 字符串類型是Redis最基礎(chǔ)的數(shù)據(jù)類型,關(guān)于字符串需要特別注意: 1)首先Redis中所有的鍵的類型都是字符串類型,而且其他幾種數(shù)據(jù)結(jié)構(gòu)也都是在字符串類似基礎(chǔ).上構(gòu)建的,例如列表和集合的 元素類型是字符串類型,所以

    2024年02月02日
    瀏覽(18)
  • C# 字符串(String)

    C#基礎(chǔ)學習入門系列- C# 字符串(String) C#字符串(String)是一種不可變的序列字符。任何對字符串的操作都會返回一個新的字符串。字符串在C#中是一個引用類型,使用System.String類表示。 字符串可以通過使用雙引號或者@符號來創(chuàng)建。雙引號用于創(chuàng)建普通字符串 ,例如: @符

    2024年01月21日
    瀏覽(64)
  • 6.string字符串的比較

    6.string字符串的比較

    比較結(jié)果是真或假, 比較:字符串是1和1比較 然后9和2 比較 大后面就不用比了 對應字符比他大就行了。 結(jié)果:如果這個是符合比較運算符的就返回真。反之假 跟具不同的目的選擇不同的運算符, 結(jié)果只有真和假,運算符不是最后的結(jié)果。 總結(jié):如果這個是符合比較運算符

    2024年02月15日
    瀏覽(22)
  • rust 字符串(String)詳解

    rust 字符串(String)詳解

    rust中的 String ,是一個非常常用的 crate ,它的底層涉及到了rust中的所有權(quán)概念,不過這不是本章的內(nèi)容,如果對rust所有權(quán)概念感興趣的,可以查看另一篇文章:rust所有權(quán) 本文的目的還是介紹 String 的基本用法,以及有哪些常用的函數(shù)可以使用 字符串,也就是由一系列字符

    2024年02月03日
    瀏覽(37)
  • 【string題解 C++】字符串相乘 | 翻轉(zhuǎn)字符串III:翻轉(zhuǎn)單詞

    【string題解 C++】字符串相乘 | 翻轉(zhuǎn)字符串III:翻轉(zhuǎn)單詞

    目錄 字符串相乘 題面 錯誤記錄 Way1 拆分成“先乘后加” 思路 實現(xiàn) 時空復雜度分析 反思 Way2 用數(shù)組 思路 實現(xiàn) 時空復雜度分析 翻轉(zhuǎn)字符串III:翻轉(zhuǎn)字符串中的單詞 題面 錯誤記錄 思路1 遍歷找單詞 實現(xiàn) 思路2 暴力解法 實現(xiàn) 力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長平

    2024年02月07日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包