文章标题
2016-06-09 10:59
465 查看
【题目】
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: “ACGAATTCCG”. When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.
Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.
For example,
Given s = “AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”,
Return:
[“AAAAACCCCC”, “CCCCCAAAAA”].
【题意】
统计长度为10且出现超过1次的子串。
【算法】
需要用的【substr】函数
str.substr(startpos, length);
startpos 是起始字符的序号
length 是[从 startpos 开始]取的字符串长度(包括startpos )。
构造hash表。
【code】
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: “ACGAATTCCG”. When studying DNA, it is sometimes useful to identify repeated sequences within the DNA.
Write a function to find all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule.
For example,
Given s = “AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”,
Return:
[“AAAAACCCCC”, “CCCCCAAAAA”].
【题意】
统计长度为10且出现超过1次的子串。
【算法】
需要用的【substr】函数
str.substr(startpos, length);
startpos 是起始字符的序号
length 是[从 startpos 开始]取的字符串长度(包括startpos )。
构造hash表。
【code】
class Solution { public: vector<string> findRepeatedDnaSequences(string s) { vector<string>res; map<string,int>mp; map<string,int>::iterator ml; for (int i = 9; i < s.size(); i++) { string stmp = s.substr(i-9,10); if(mp.count(stmp)) mp[stmp] ++; else mp[stmp] = 1; } for (ml = mp.begin(); ml!=mp.end(); ml++) { if(ml->second>1) res.push_back(ml->first); } return res; } };
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- C语言实现选择排序、冒泡排序和快速排序的代码示例