LeetCode 1405 最長快樂字串

2021-10-04 22:47:16 字數 1407 閱讀 8600

如果字串中不含有任何'aaa''bbb''ccc'這樣的字串作為子串,那麼該字串就是乙個「快樂字串」。

給你三個整數 a,b ,c,請你返回 任意乙個 滿足下列全部條件的字串 s:

輸入:a = 1, b = 1, c = 7

輸出:"ccaccbcc"

解釋:"ccbccacc"也是一種正確答案。

輸入:a = 2, b = 2, c = 1

輸出:"aabbc"

輸入:a = 7, b = 1, c = 0

輸出:"aabaa"

解釋:這是該測試用例的唯一正確答案。

這道題的思路是我們先將字元和數量對應存在自定義的char類中,方便對char陣列進行排序(從大到小,降序排列);這樣每次可以取出數量最多的(類似最大優先佇列);由於每次最多只能有兩個連續的字元,我們需要判斷前兩個字元是否和當前的數量最多的字元一致,一致的話我們不能繼續新增該字元,得看看是否存在第二多的字元(如果其他字元數量都是0就不行了);不一致的話我們即可直接新增。按照這樣的策略就能得到最長的快樂字串。

public string longestdiversestring

(int a,

int b,

int c)

else

// 否則,無法繼續新增,終止迴圈

break;}

else

}else

// 對自定義的 char 陣列進行排序

arrays.

sort

(ch);}

return sb.

tostring()

;}/** * 任意乙個字元的數量非空

* @param ch

* @return

*/public

boolean

check

(char[

] ch)

return

false;}

/** * 自定義型別,含字元和數量,並實現 comparable 介面,方便根據 num 來排序

*/class

char

implements

comparable

/*** 根據 num,降序排序

* @param o

* @return

*/@override

public

intcompareto

(char o)

}

1405 最長快樂字串

如果字串中不含有任何 aaa bbb 或 ccc 這樣的字串作為子串,那麼該字串就是乙個 快樂字串 給你三個整數 a,b c,請你返回 任意乙個 滿足下列全部條件的字串 s s 是乙個盡可能長的快樂字串。s 中 最多 有a 個字母 a b 個字母 b c 個字母 c s 中只含有 a b c 三種字...

1405 最長快樂字串(貪心演算法)

如果字串中不含有任何 aaa bbb 或 ccc 這樣的字串作為子串,那麼該字串就是乙個 快樂字串 給你三個整數 a,b c,請你返回 任意乙個 滿足下列全部條件的字串 s s 是乙個盡可能長的快樂字串。s 中 最多 有a 個字母 a b 個字母 b c 個字母 c s 中只含有 a b c 三種字...

Leetcode 最長子串

給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。includ...