#include <iostream>
#include <string>
using namespace std;
//class declaration
class Nucleus{
private:
string _DNA_strand{"ABCADDASDASABCAFGDACCACABCDA"};
public:
const string get_codon(){return _DNA_strand;} //accessor of private variable
unsigned int get_num_of_codon_appearances(const string& _DNA_strand, const string& ) const;
};
//Function to return the number of times a string is found within another string.
unsigned int Nucleus::get_num_of_codon_appearances(const string& codon, const string& c) const
{
unsigned int count = 0; //sets count
size_t counter = 0; //sets counter
while (counter != string::npos) // if counter does not equal string no position
{
size_t i = counter + c.length(); // sets i to counter + length of searched for object
counter = codon.find(c, i); // .find() method
count++;
}
return count;
}
//Main Function
int main()
{
Nucleus temp;
const string codon = temp.get_codon();
const string c = "ABC";
cout << "The Number of times " << c << " is found in "
<< temp.get_codon() << " is: " << temp.get_num_of_codon_appearances(codon, c) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vY2xhc3MgZGVjbGFyYXRpb24KY2xhc3MgTnVjbGV1c3sKcHJpdmF0ZToKIHN0cmluZyBfRE5BX3N0cmFuZHsiQUJDQUREQVNEQVNBQkNBRkdEQUNDQUNBQkNEQSJ9OwoKcHVibGljOgogICAgY29uc3Qgc3RyaW5nIGdldF9jb2Rvbigpe3JldHVybiBfRE5BX3N0cmFuZDt9IC8vYWNjZXNzb3Igb2YgcHJpdmF0ZSB2YXJpYWJsZQogICAgdW5zaWduZWQgaW50IGdldF9udW1fb2ZfY29kb25fYXBwZWFyYW5jZXMoY29uc3Qgc3RyaW5nJiBfRE5BX3N0cmFuZCwgY29uc3Qgc3RyaW5nJiApIGNvbnN0Owp9OwoKLy9GdW5jdGlvbiAgdG8gcmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZXMgYSBzdHJpbmcgaXMgZm91bmQgd2l0aGluIGFub3RoZXIgc3RyaW5nLgp1bnNpZ25lZCBpbnQgTnVjbGV1czo6Z2V0X251bV9vZl9jb2Rvbl9hcHBlYXJhbmNlcyhjb25zdCBzdHJpbmcmIGNvZG9uLCBjb25zdCBzdHJpbmcmIGMpIGNvbnN0CnsKICAgIHVuc2lnbmVkIGludCBjb3VudCA9IDA7IC8vc2V0cyBjb3VudAogICAgc2l6ZV90IGNvdW50ZXIgPSAwOyAvL3NldHMgY291bnRlcgogICAgd2hpbGUgKGNvdW50ZXIgIT0gc3RyaW5nOjpucG9zKSAvLyBpZiBjb3VudGVyIGRvZXMgbm90IGVxdWFsIHN0cmluZyBubyBwb3NpdGlvbgogICAgewogICAgICAgICAgICBzaXplX3QgaSA9IGNvdW50ZXIgKyBjLmxlbmd0aCgpOyAvLyBzZXRzIGkgdG8gY291bnRlciArIGxlbmd0aCBvZiBzZWFyY2hlZCBmb3Igb2JqZWN0CiAgICAgICAgICAgIGNvdW50ZXIgPSBjb2Rvbi5maW5kKGMsIGkpOyAvLyAuZmluZCgpIG1ldGhvZCAKICAgICAgICAgICAgY291bnQrKzsKICAgIH0KICAgIHJldHVybiBjb3VudDsKfQoKLy9NYWluIEZ1bmN0aW9uCmludCBtYWluKCkKewogICAgTnVjbGV1cyB0ZW1wOwogICAgY29uc3Qgc3RyaW5nIGNvZG9uID0gdGVtcC5nZXRfY29kb24oKTsKICAgIGNvbnN0IHN0cmluZyBjID0gIkFCQyI7CiAgICAKICAgIGNvdXQgPDwgIlRoZSBOdW1iZXIgb2YgdGltZXMgIiA8PCBjIDw8ICIgaXMgZm91bmQgaW4gIiAKICAgIDw8IHRlbXAuZ2V0X2NvZG9uKCkgPDwgIiBpczogIiA8PCB0ZW1wLmdldF9udW1fb2ZfY29kb25fYXBwZWFyYW5jZXMoY29kb24sIGMpIDw8IGVuZGw7CiAgICAKICAgIHJldHVybiAwOyAgIAp9Cg==