Leetcode187-Repeated DNA Sequences

题目描述

所有DNA序列都可以用 A,C,G,T 四个字母表示,比如 “ACGAATTCCG”,研究DNA序列时,有时识别重复子串是很有意义的。
请编写一个程序,找到所有长度为10的且出现次数多于1的子串。

示例

输入:s = “AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT”
输出:[“AAAAACCCCC”, “CCCCCAAAAA”]

思路

用哈希表记录所有长度是10的子串的个数。
从前往后扫描,当子串出现第二次时,将其记录在答案中。

代码

class Solution {
public:
    vector<string> findRepeatedDnaSequences(string s) {
    vector<string>a;
    map<string,int>hash;
    for(int i=0;i+10<=s.size();i++)//刚开始没写等于size()错了……
    {
        string str=s.substr(i,10);
        if(++hash[str]==2) a.push_back(str);
    }
    return a;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_44010678/article/details/88076668