首页 > 解决方案 > 互补DNA(C++)

问题描述

任务:根据其模式为新的 Dna 字符串编写代码。就像你知道的那样,在 DNA 字符串中,符号“A”和“T”是互补的,就像“C”和“G”一样。例如:DNA_strand ("ATTGC") //returns "TAACG"DNA_strand ("GTAT") //returns "CATA" 我的代码=>

#include <string>
#include <vector>
#include <iostream>
std::string DNAStrand(const std::string& dna)
{
  std::string Sym;
  std::string c;
  std::stringstream s;
  s << Sym;
  s >> c;
  for(int i = 0; i < dna.size() - 1; i++) {
      switch (dna[i]) {
          case ('A'):
          Sym[i] = 'T';
          break;
          case ('T'): 
          Sym[i] = 'A';
          break;
          case ('C'):
          Sym[i] = 'G';
          break;
          case ('G'):
          Sym[i] = 'C';
          break;
          default:
          std::cout << "invalid";
} return c.str();
}

int main() {
  std::cout << DNAStrand("ATTGC") << "\n"; //retun "TAACG"
  std::cout << DNAStrand("GTAT") << "\n";  //retun "CATA"
}
}

标签: stringdna-sequence

解决方案


您已经创建了vector<string>,但在if语句中,您将 的元素设置vectorchars。你想建立一个string,而不是一个vector<string>

您应该将后续if语句替换为else if,或使用switch语句。满足语句if之后的 elseif语句将被不必要地执行。

将其替换vectorostringstream。将流命名为s,您将附加一个char命名cs << c。在迭代结束时dna,返回s.str()


推荐阅读