题目描述
DNA序列 由一系列核苷酸组成,缩写为 ‘A’, ‘C’, ‘G’ 和 ‘T’.。
例如,“ACGAATTCCG” 是一个 DNA序列 。
在研究 DNA 时,识别 DNA 中的重复序列非常有用。
给定一个表示 DNA序列 的字符串 s ,返回所有在 DNA 分子中出现不止一次的 长度为 10 的序列(子字符串)。按 从左至右遍历顺序 返回答案。
输入样例复制
s=”AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”
AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT
输出样例复制
[AAAAACCCCC,CCCCCAAAAA]
中间以 ,分割,末尾无换行
提示:
0 <= s.length <= 105
s[i]==
‘A’、‘C’、‘G’ or ‘T’
#include<iostream>
#include<set>
#include<string.h>
using namespace std;
int main()
{
string str;
set<string>s;
cin>>str;
for(int i=0;i<=str.size()-10;i++)
{
for(int j=i+1;j<=str.size()-10;j++)//双重循环进行迭代判断字串是否相同
{
if(str.substr(i,10)==str.substr(j,10))//利用substr函数,用法可看[substr详解](http://t.csdn.cn/3oEZm)
{
s.insert(str.substr(i,10));//利用set集合内元素不重复的性质,set具体用法可看[C++中set使用详细说明](http://t.csdn.cn/MqnYv)
break;
}
}
}
if(s.size())
{
cout<<"[";
set<string>::iterator it;
for(it=s.begin();it!=s.end();it++)
{
cout<<*it;
if(it!=prev(s.end()))
{
cout<<",";
}
}
cout<<"]";
}
return 0;
}