成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

貪心讓你分割更多平衡字符串

開發(fā) 前端
大家好,我是來自于華為的程序員小熊。今天給大家?guī)硪坏雷址嚓P(guān)的題目,這道題也是今天的力扣每日一題,同時(shí)也是華為、蘋果、谷歌和雅虎等大廠的面試題,即力扣上的第1221題-分割平衡字符串。

[[422180]]

本文轉(zhuǎn)載自微信公眾號(hào)「程序員小熊」,作者Dine 。轉(zhuǎn)載本文請(qǐng)聯(lián)系程序員小熊公眾號(hào)。

前言

大家好,我是來自于華為的程序員小熊。今天給大家?guī)硪坏雷址嚓P(guān)的題目,這道題也是今天的力扣每日一題,同時(shí)也是華為、蘋果、谷歌和雅虎等大廠的面試題,即力扣上的第1221題-分割平衡字符串。

本文主要介紹貪心+棧的策略來解答此題,供大家參考,希望對(duì)大家有所幫助。

分割平衡字符串

在一個(gè)平衡字符串中,'L' 和 'R' 字符的數(shù)量是相同的。

給你一個(gè)平衡字符串 s,請(qǐng)你將它分割成盡可能多的平衡字符串。

注意:分割得到的每個(gè)字符串都必須是平衡字符串。

返回可以通過分割得到的平衡字符串的最大數(shù)量 。

示例

示例及提示

解題思路

要求分割得到平衡字符串的最大數(shù)量,很容易想到暴力法,只要遍歷一遍字符串,統(tǒng)計(jì)字符 'L' 和 'R' 的數(shù)量,即可計(jì)算出題目要求的結(jié)果。

方法一:暴力法

遍歷字符串,統(tǒng)計(jì) 'L' 和 'R' 的數(shù)量,當(dāng)其數(shù)量相同時(shí),則表明可以當(dāng)前遍歷到的字符可跟之前的遍歷的那些字符構(gòu)成平衡字符串,此時(shí)統(tǒng)計(jì)平衡字符串的個(gè)數(shù),并將 'L' 和 'R' 的數(shù)量全部置 0,然后繼續(xù)遍歷并統(tǒng)計(jì)平衡字符串的個(gè)數(shù),直至遍歷完整個(gè)字符串即可。

Show me the Code

「C」

  1. int balancedStringSplit(char * s) { 
  2.     int numR = 0, numL = 0, res = 0; 
  3.     for (int i = 0; s[i] != '\0'; ++i) { 
  4.         if (s[i] == 'L') { 
  5.             numL++; 
  6.         } else { 
  7.             numR++; 
  8.         } 
  9.  
  10.         if (numL == numR) { 
  11.             res++; 
  12.             numL = 0; 
  13.             numR = 0; 
  14.         } 
  15.     } 
  16.  
  17.     return res;  

復(fù)雜度分析

時(shí)間復(fù)雜度:O(n),其中 n 為字符串的長度,需要遍歷一遍字符串。

空間復(fù)雜度:O(1),未開辟額外的存儲(chǔ)空間。

方法二:貪心 + 棧

本題也可以采用貪心的思想,遍歷字符串時(shí),遇到一個(gè)個(gè)平衡字符串時(shí),將其分割出來,再繼續(xù)遍歷剩余的子字符串。

同時(shí)可以采用棧的思想,在遍歷字符串時(shí),如果遇到字符 'R' 時(shí),讓其入棧,棧內(nèi)的字符個(gè)數(shù)加一;遇到字符 'L' 時(shí),讓字符 'R' 出棧,棧內(nèi)的字符個(gè)數(shù)減一。

遍歷的同時(shí)判斷棧中的字符個(gè)數(shù)是否為 0,若為 0,則代表已遍歷的字符已構(gòu)成平衡字符串,統(tǒng)計(jì)平衡字符串的個(gè)數(shù),直至遍歷結(jié)束。

舉例

以字符串 s = "RLLLRRLR" 為例。

例子

在遍歷到 s 的某一字符時(shí),用兩個(gè)變量 cnt 和 res 分別記錄字符 'R' 和 'L' 之差以及平衡字符串的數(shù)量;

設(shè)置兩個(gè)變量,邊遍歷邊統(tǒng)計(jì)平衡字符串個(gè)數(shù)

計(jì)算 cnt 和 res 的大小;

遍歷到 'R' 時(shí),cnt 加 1

遍歷到 'L'時(shí),cnt 減 1 并計(jì)算 res

完整的計(jì)算過程,如下動(dòng)圖示:

計(jì)算平衡字符串的完整過程動(dòng)圖

Show me the Code

「C」

  1. int balancedStringSplit(char * s) { 
  2.     int cnt = 0, res = 0; 
  3.     for (int i = 0; s[i] != '\0'; ++i) { 
  4.         cnt += s[i] == 'R' ? 1 : -1; 
  5.         if (cnt == 0) { 
  6.             res++; 
  7.         } 
  8.     } 
  9.  
  10.     return res;  

「C++」

  1. int balancedStringSplit(string s) { 
  2.     int res = 0, cnt = 0; 
  3.     for (auto a : s) { 
  4.         cnt += a == 'R' ? 1 : -1; 
  5.         if (cnt == 0) { 
  6.             res += 1; 
  7.         } 
  8.     } 
  9.  
  10.     return res; 

「Java」

  1. int balancedStringSplit(String s) { 
  2.     int res = 0, cnt = 0; 
  3.     for (int i = 0; i < s.length(); i++) { 
  4.         cnt += s.charAt(i) == 'R' ? 1 : -1; 
  5.         if (cnt == 0) { 
  6.             res += 1; 
  7.         } 
  8.     } 
  9.  
  10.     return res; 

「Python3」

  1. def balancedStringSplit(self, s: str) -> int
  2.     res, cnt = 0, 0         
  3.     for c in s: 
  4.         cnt += 1 if c == 'R' else -1           
  5.         if cnt == 0: 
  6.             res += 1 
  7.          
  8.     return res 

「Golang」

  1. func balancedStringSplit(s string) int { 
  2.     cnt, res := 0, 0 
  3.     for _, ch := range s { 
  4.         if ch == 'R' { 
  5.             cnt++ 
  6.         } else { 
  7.             cnt-- 
  8.         } 
  9.  
  10.         if cnt == 0 { 
  11.             res++ 
  12.         } 
  13.     } 
  14.  
  15.     return res 

復(fù)雜度分析

 

  • 時(shí)間復(fù)雜度:O(n),其中 n 為字符串的長度,需要遍歷一遍字符串。
  • 空間復(fù)雜度:O(1),未開辟額外的存儲(chǔ)空間。

 

責(zé)任編輯:武曉燕 來源: 程序員小熊
相關(guān)推薦

2021-12-24 11:59:47

數(shù)據(jù)結(jié)構(gòu)算法字符串

2009-08-07 14:15:21

C#字符串分割

2021-03-08 08:23:24

Java字符串截取

2022-12-09 15:06:26

字符串Intl字符串分割

2022-12-21 08:05:04

字符串分割技巧

2010-11-26 10:43:48

MySQL分割字符串

2010-11-26 13:27:41

MySQL存儲(chǔ)過程

2009-12-01 09:18:50

PHP分割字符串

2020-11-03 18:36:37

面試字符串算法

2010-10-09 11:43:10

MYSQL字符串

2022-12-06 08:27:50

Bash腳本字符串

2009-11-04 15:33:05

ADO.NET連接字符

2023-02-26 00:00:02

字符串分割String

2023-12-15 09:49:54

回溯解決組合問題數(shù)組

2021-04-15 00:16:18

JavaString字符串

2023-09-13 09:17:00

模型訓(xùn)練

2013-04-28 10:36:00

Obj-C數(shù)組Obj-C字符串拼接與

2020-08-25 08:56:55

Pythonawk字符串

2024-09-30 11:16:39

C#正則表達(dá)式

2010-02-04 10:52:36

C++字符串分割函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲天堂一区二区 | 亚洲不卡一 | 黄色小视频大全 | 四虎影院免费在线 | www.嫩草| 日韩欧美国产电影 | 精品综合久久久 | 婷婷午夜天 | 亚洲高清视频在线观看 | 欧美激情在线播放 | 亚洲免费在线播放 | 久久久久久亚洲 | 天天天操 | 天天插天天狠天天透 | 黄色片大全在线观看 | 亚洲精品第一 | 国产精品特级毛片一区二区三区 | 免费看黄视频网站 | 国产精品久久九九 | 久久久精品网站 | 欧美久久精品一级黑人c片 91免费在线视频 | 精品乱子伦一区二区三区 | 狠狠干五月天 | 国产成人精品一区二区三区四区 | 国产精品爱久久久久久久 | 在线观看av网站 | 欧美男人亚洲天堂 | 一区二区三区视频在线免费观看 | 最新av在线网址 | 精品国产一区二区三区av片 | 狼色网 | 日本亚洲精品成人欧美一区 | 免费观看一级黄色录像 | 国产精品亚洲成在人线 | 日韩在线视频一区二区三区 | 国产精品视频播放 | 国产久视频 | 日韩淫片免费看 | www.99re| 国产精品美女久久久久久免费 | 国产精品欧美一区二区三区不卡 |