題目描述
牛牛又從生物科研工作者那裏獲得一個任務,這次牛牛需要幫助科研工作者從DNA序列s中找出最短沒有出現在DNA序列s中的DNA片段的長度。
例如:s = AGGTCTA
序列中包含了所有長度爲1的('A','C','G','T')片段,但是長度爲2的沒有全部包含,例如序列中不包含"AA",所以輸出2。
輸入描述:
輸入包括一個字符串s,字符串長度length(1 ≤ length ≤ 2000),其中只包含'A','C','G','T'這四種字符。
輸出描述:
輸出一個正整數,即最短沒有出現在DNA序列s中的DNA片段的長度。
示例1
輸入
AGGTCTA
輸出
2
長度爲n,就有4^n個序列,暴力尋找哪個長度的子串不夠。
用set特性來記錄。
#include<iostream>
#include<string>
#include<set>
#include<cmath>
using namespace std;
int main()
{
string str;
cin >> str;
int len = str.size();
for(int i = 1; i <= len; i++)
{
set<string> s;
for(int j = 0; j + i - 1 < len; j++)
{
s.insert(str.substr(j, i));
}
if(s.size() < pow(4, i))
{
cout << i << endl;
break;
}
}
return 0;
}