题解 | #DNA序列#
DNA序列
https://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a
#include <iostream> #include <string> using namespace std; class DNASequence { private: //DNA序列 string s; //所需字串长度 int n; public: //构造函数 DNASequence(const string s, const int n); //析构函数 ~DNASequence(); //找出子串 const string search(void)const; //统计字符串s中C和G的总数 const int count(const string s)const; }; DNASequence::DNASequence(const string s, const int n) { this->s = s; this->n = n; return; } DNASequence::~DNASequence() { } const string DNASequence::search(void) const { string s1; int num = 0; //比较所有长度符合的子串 for (int i = 0; i <= this->s.size() - this->n; i++) { string si = this->s.substr(i, this->n); int ni = this->count(si); if (ni > num) { s1 = si; num = ni; } } return s1; } const int DNASequence::count(const string s) const { int num = 0; //遍历字符串 for (char ch : s) if ((ch == 'C') || (ch == 'G')) num++; return num; } int main() { string a; int b; while (cin >> a >> b) { // 注意 while 处理多个 case cout << DNASequence(a, b).search() << endl; } } // 64 位输出请用 printf("%lld")