题解 B2114 配对碱基链

· · 题解

我们使用 C 风格字符数组存储碱基链,使用 strlen() 函数获取字符串长度,然后枚举字符串的每一位,将 ACGT 分别替换为 TGCA 即可。

有一点要注意:C 风格字符数组中,字符串后还会有一位 \0 表示字符串结尾,因此数组需要开大一位。

参考代码:

//By: Luogu@rui_er(122461)
#include <bits/stdc++.h>
#define rep(x,y,z) for(int x=y;x<=z;x++)
#define per(x,y,z) for(int x=y;x>=z;x--)
#define debug printf("Running %s on line %d...\n",__FUNCTION__,__LINE__)
using namespace std;
typedef long long ll;
const int N = 256;

char s[N];
template<typename T> void chkmin(T &x, T y) {if(x > y) x = y;}
template<typename T> void chkmax(T &x, T y) {if(x < y) x = y;}

int main() {
    scanf("%s", s);
    int n = strlen(s);
    rep(i, 0, n-1) {
        switch(s[i]) {
            case 'A': putchar('T'); break;
            case 'C': putchar('G'); break;
            case 'G': putchar('C'); break;
            case 'T': putchar('A'); break;
        }
    }
    return 0;
}