update
This commit is contained in:
parent
8c4be1f9cf
commit
3494fac0d7
50
src/main.cpp
50
src/main.cpp
@ -11,6 +11,7 @@
|
|||||||
#include"tools.hpp"
|
#include"tools.hpp"
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
|
#include <unordered_map>
|
||||||
|
|
||||||
|
|
||||||
// std::string reversedComplement(std::string DNAsequence);
|
// std::string reversedComplement(std::string DNAsequence);
|
||||||
@ -21,45 +22,26 @@
|
|||||||
|
|
||||||
const size_t MAX_SIZE = 5e4+5;
|
const size_t MAX_SIZE = 5e4+5;
|
||||||
|
|
||||||
void reverseComplement(std::array<char, MAX_SIZE> &DNAsequence,const size_t buf_size) // 注意这里要用'&'取引用,这样不用拷贝,大大减少耗时
|
void reverseComplement(std::array<char, MAX_SIZE> &DNAsequence, const size_t buf_size)
|
||||||
{
|
{
|
||||||
using namespace std;
|
static const std::unordered_map<char, char> complement = {
|
||||||
|
{'A', 'T'}, {'a', 'T'},
|
||||||
|
{'T', 'A'}, {'t', 'A'},
|
||||||
|
{'C', 'G'}, {'c', 'G'},
|
||||||
|
{'G', 'C'}, {'g', 'C'}
|
||||||
|
};
|
||||||
|
|
||||||
// string l = "";
|
std::reverse(DNAsequence.begin(), DNAsequence.begin() + buf_size);
|
||||||
int i;
|
|
||||||
int q = strlen(DNAsequence.data());
|
for (size_t i = 0; i < buf_size; ++i) {
|
||||||
reverse(DNAsequence.begin(), DNAsequence.begin()+q); //将字符串反过来
|
auto it = complement.find(DNAsequence[i]);
|
||||||
for (i = 0; i < q; i++)
|
if (it != complement.end()) {
|
||||||
{
|
DNAsequence[i] = it->second;
|
||||||
char &l = DNAsequence[i];
|
|
||||||
if (DNAsequence[i] == 'A'){
|
|
||||||
// l = l + 'T';
|
|
||||||
l = 'T';
|
|
||||||
}else if (DNAsequence[i] == 'a'){
|
|
||||||
// l = l + 'T';
|
|
||||||
l = 'T';
|
|
||||||
}else if (DNAsequence[i] == 'c'){
|
|
||||||
// l = l + 'G';
|
|
||||||
l = 'G';
|
|
||||||
}else if (DNAsequence[i] == 'C'){
|
|
||||||
// l = l + 'G';
|
|
||||||
l = 'G';
|
|
||||||
}else if(DNAsequence[i] == 'g'){
|
|
||||||
// l = l + 'C';
|
|
||||||
l = 'C';
|
|
||||||
}else if (DNAsequence[i] == 'G'){
|
|
||||||
// l = l + 'C';
|
|
||||||
l = 'C';
|
|
||||||
}else if (DNAsequence[i] == 't'){
|
|
||||||
// l = l + 'A';
|
|
||||||
l = 'A';
|
|
||||||
}else if (DNAsequence[i] == 'T'){
|
|
||||||
// l = l + 'A';
|
|
||||||
l = 'A';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class Spent{
|
class Spent{
|
||||||
const decltype(std::chrono::system_clock::now()) start;
|
const decltype(std::chrono::system_clock::now()) start;
|
||||||
const std::string_view name;
|
const std::string_view name;
|
||||||
|
Loading…
Reference in New Issue
Block a user