給出乙個長度為 n 的字串(1<=n<=100000),求有多少個連續字串中所有的字母都出現了偶數次。
這題的思路是這樣的,首先我們可以狀壓,每一位0代表該位代表字母的數量是偶數個,1則代表奇數個
那麼我們記錄乙個字首的狀態,如果後面有歐串,則一定可以異或之前出現過的字首得到全零的合法狀態,
因此我們用map記錄一下,之前有多少個相同狀態的字首就好了
不用列舉子串的原因是,我們總可以用長的字首減去短的字首來獲得所有符合條件的子串,附上**
#include #include#include
#include
using
namespace
std;
const
int maxn=1e5+7
;char
s[maxn];
mapmp;
typedef
long
long
ll;int
main()
printf(
"%lld\n
",ans);
}return0;
}
對給定字串求所有的組合
輸入字串,輸出所有的組合,比如輸入abc,輸出 a b c ab ac bc abc。題目解法 abc用01串表示,001表示輸出c,111表示輸出abc,解法如下。空間複雜度n,時間複雜度為2 n 1,因為有這麼多種結果啊。package combination author administra...
Leetcode438 找到字串中所有字母異位詞
給定乙個字串 s 和乙個非空字串 p,找到 s 中所有是 p 的字母異位詞的子串,返回這些子串的起始索引。字串只包含小寫英文本母,並且字串 s 和 p 的長度都不超過 20100。說明 字母異位詞指字母相同,但排列不同的字串。不考慮答案輸出的順序。示例 1 輸入 s cbaebabacd p abc...
leetcode438 找到字串中所有字母異位詞
其實我的演算法並不是強項,然後今天在做438這道題的時候發現了乙個讓我無比佩服的思路,這裡記錄一下和大家分享 首先看一下題目 給定乙個字串 s 和乙個非空字串 p,找到 s 中所有是 p 的字母異位詞的子串,返回這些子串的起始索引。字串只包含小寫英文本母,並且字串 s 和 p 的長度都不超過 201...