貪心策略 分隔字串使同種字元出現在一起

2022-08-20 17:15:13 字數 858 閱讀 2095

763. partition labels (medium)

input: s = "ababcbacadefegdehijhklij"

output: [9,7,8]

explanation:

the partition is "ababcbaca", "defegde", "hijhklij".

a partition like "ababcbacadefegde", "hijhklij" is incorrect, because it splits s into less parts.

題目描述:

這道題給了我們乙個字串s,然後將其盡可能多的分割為子字串,條件是每種字元最多只能出現在乙個子串中,這道題的難點在於如何找到字串的斷點,即拆分為子串的位置,我們仔細觀察題目中的例子,可以發現一旦某個字母多次出現了,那麼其最後乙個出現位置必須要在當前子串中,字母a,e和j分別是三個子串的結束字母。所以我們關注的是每個字母最後出現的位置,我們可以使用map儲存每個字母和其最後一次出現的位置。

建立好對映後,我們遍歷字串s,我們維護乙個start變數,是當前子串的起始位置,還有乙個last變數,是當前子串的結束位置,每當我們遍歷到乙個字母時,我們從map中提取其出現的最後乙個位置,因為乙個字串一旦包含乙個字母,就要包含所有相同的字母,所以我們要不停的用當前字母的最後乙個下標來更新last變數,只有當i和last相等的時候,就是當前子串該斷開的地方。

**:

class solution 

int start=0;

int last=0;

while(starti++;}}

return res;

}}

字串分隔

題目 連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列 長度不是8整數倍的字串請在後面補數字0,空字串不處理。輸入 abc 123456789輸出 abc00000 12345678 90000000 include include using namespace std char str...

分隔字串

注 此sql原作者 袁老大 create or replace package split pck is type char table is table of varchar2 4000 function split string pi str in varchar2,pi separator i...

字串分隔

連續輸入字串,請按長度為8拆分每個字串後輸出到新的字串陣列 長度不是8整數倍的字串請在後面補數字0,空字串不處理。連續輸入字串 輸入2次,每個字串長度小於100 輸出到長度為8的新字串陣列。abc 123456789abc00000 12345678 90000000華為機試題。我的思路是先假設輸入...