You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Java实现DNA序列互补链生成?

生成DNA互补链的解决方案

嘿,这个问题我之前写代码的时候碰到过,本质就是个字符映射的小问题,我给你梳理下思路和具体实现:

问题回顾

脱氧核糖核酸(DNA)是存在于细胞核中的化学物质,承载着生物体发育和运作的“指令”。在DNA字符串中,符号“A”与“T”互补,“C”与“G”互补。需实现一个函数,输入一条DNA链(字符串),输出其对应的互补链。

核心思路

最直接的方式就是先建立一个碱基互补映射表,把每个碱基和它的互补碱基一一对应起来,然后遍历输入的DNA字符串,把每个字符替换成映射表里对应的互补碱基,最后拼接成新的字符串就行。

各语言实现示例

Python 实现

Python有两种简洁的写法,都能轻松搞定:

写法1:字典遍历拼接

用字典存映射关系,然后用生成器表达式快速生成结果:

def dna_complement(dna):
    complement = {'A': 'T', 'T': 'A', 'C': 'G', 'G': 'C'}
    return ''.join([complement[char] for char in dna])

写法2:用字符串翻译表(更高效)

如果处理很长的DNA序列,用str.translate()效率会更高:

def dna_complement(dna):
    # 建立翻译表:把ATCG替换成TAGC
    trans_table = str.maketrans('ATCG', 'TAGC')
    return dna.translate(trans_table)

JavaScript 实现

JS里可以用对象做映射,配合数组方法链式调用:

function dnaComplement(dna) {
    const complementMap = { 'A': 'T', 'T': 'A', 'C': 'G', 'G': 'C' };
    // 拆分成数组→映射替换→拼接成字符串
    return dna.split('').map(char => complementMap[char]).join('');
}

边界情况提示

如果题目需要处理非DNA字符(比如输入里有其他字母),可以在映射里加默认处理:比如Python里用complement.get(char, char)保留原字符,或者根据需求抛出错误;空字符串的情况上面的代码都能直接返回空,不用额外处理。

测试验证

举两个例子确认下:

  • 输入 "ATTGC" → 输出 "TAACG"
  • 输入 "GTAT" → 输出 "CATA"

内容的提问来源于stack exchange,提问作者Sibnon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:24:30