牛客網 暗黑的字串

2021-08-26 02:57:56 字數 953 閱讀 6521

題目描述

乙個只包含』a』、』b』和』c』的字串,如果存在某一段長度為3的連續子串中恰好』a』、』b』和』c』各有乙個,那麼這個字串就是純淨的,否則這個字串就是暗黑的。例如:

baacaaccbaaa 連續子串」cba」中包含了』a』,』b』,』c』各乙個,所以是純淨的字串

aabbccaabb 不存在乙個長度為3的連續子串包含』a』,』b』,』c』,所以是暗黑的字串

你的任務就是計算出長度為n的字串(只包含』a』、』b』和』c』),有多少個是暗黑的字串。

輸入描述:

輸入乙個整數n,表示字串長度(1 ≤ n ≤ 30)

輸出描述:

輸出乙個整數表示有多少個暗黑字串

思路分析:

思路很明顯,動態規劃,但是要怎麼規劃,心裡並不清楚,後來想到狀態轉移。

分析一下吧當前位置的純淨只跟前兩個字母有關

假設 f(n)=s(n)+d(n) (s(n)表示前兩個字母相同比如aa,d(n)表示兩個字母不同比如ab)

對於s(n-1) 當前字母可以取abc中任意一種情況,即3*s(n-1)

對於d(n-1) 當前字母只能去前兩個字母中的任何乙個,即2*d(n-1)

f(n)=3*s(n-1)+2*d(n-1)=2f(n-1)+s(n-1)

現在剩餘乙個s(n-1)待求解

我們這樣想s(n)跟之前的字母又有什麼關係呢

對於s(n-1) aa 第三個字母只能跟之前一樣aaa 才能得到s(n)

對於d(n-1) ab 第三個字母只有跟最後乙個一樣abb 才能得到s(n)

可以得到結論 s(n)=s(n-1)+d(n-1)=f(n-1)

原表示式可以修改為

f(n)=2*f(n-1)+f(n-2) 這樣就可以用動態規劃了

牛客網 暗黑的字串

乙個只包含 a b 和 c 的字串,如果存在某一段長度為3的連續子串中恰好 a b 和 c 各有乙個,那麼這個字串就是純淨的,否則這個字串就是暗黑的。例如 baacaaccbaaa 連續子串 cba 中包含了 a b c 各乙個,所以是純淨的字串 aabbccaabb 不存在乙個長度為3的連續子串包...

牛客網 字串的統計字串

牛客網 題目描述 給定乙個字串str,返回str的統計字串。例如 aaabbbbcccd 的統計字串為 a 3 b 4 c 3 d 1 輸入字元長度都大於1 解題思路 1.第一種方法輸入的是 aaa n 這種字元。因此我們將當前字元cur指向首字元,從1 字串長度的範圍內開始遍歷判斷當前字元cur是...

牛客網 字串價值

熱度指數 7時間限制 1秒空間限制 32768k 有一種有趣的字串價值計算方式 統計字串中每種字元出現的次數,然後求所有字元次數的平方和作為字串的價值 例如 字串 abacaba 裡面包括4個 a 2個 b 1個 c 於是這個字串的價值為4 4 2 2 1 1 21 牛牛有乙個字串s,並且允許你從s...