6.7 KiB
6.7 KiB
title | localeTitle |
---|---|
Dna Pairing | Dna配对 |
如果卡住,请记得使用**Read-Search-Ask
** 。尝试配对程序并编写自己的代码
问题说明:
-
您将获得DNA链序列,您需要获得该对并将其作为碱基对的2D阵列返回。请记住,提供的链应始终是第一位的。
-
解释问题的另一种方法是:DNA中存在四个潜在的字符:“A”,“T”,“G”和“C”。 “A”和“T”总是配对在一起,“G”和“C”总是配对在一起。
此问题为您提供输入,例如“ATCGA”。这五个角色中的每一个都缺少对子。
例如,第一个字符“A”需要与“T”配对以给出数组元素[“A”,“T”]。
第二个字符“T”需要与“A”配对以给出数组元素[“T”,“A”]。
最终输出中的元素数等于输入中的字符数。
该问题不涉及将输入重新排列成不同的组合或排列。
相关链接
提示:1
- 有两种基本情况,AT和CG,这两种情况都有。如果你能想到任何事情的陈述,你可以使用正则表达式。
现在尝试解决问题
提示:2
- 我建议使用开关,因为它使事情变得更顺畅。
现在尝试解决问题
提示:3
- 结果必须是一个数组数组,因此在推送时要记住这一点。
现在尝试解决问题
扰流警报!
提前解决!
基本代码解决方案
function pairElement(str) {
// Return each strand as an array of two elements, the original and the pair.
var paired = [];
// Function to check with strand to pair.
var search = function(char) {
switch (char) {
case 'A':
paired.push(['A', 'T']);
break;
case 'T':
paired.push(['T', 'A']);
break;
case 'C':
paired.push(['C', 'G']);
break;
case 'G':
paired.push(['G', 'C']);
break;
}
};
// Loops through the input and pair.
for (var i = 0; i < str.length; i++) {
search(str[i]);
}
return paired;
}
// test here
pairElement("GCG");
代码说明:
- 该程序非常简单,我提出的最佳解决方案是使用开关来捕获所有可能的四个元素。使用if语句会占用太多代码。您也可以使用正则表达式。
- 由于我们必须使用原始和配对,我决定采用所有四种情况而不是基数两种情况。
- 创建一个空数组并使用
search
功能将正确的值推送到数组并返回它们。
相关链接
中级代码解决方案:
function pairElement(str) {
//create object for pair lookup
var pairs = {
"A": "T",
"T": "A",
"C": "G",
"G": "C"
}
//split string into array of characters
var arr = str.split("");
//map character to array of character and matching pair
return arr.map(x => [x,pairs[x]]);
}
//test here
pairElement("GCG");
代码说明:
- 首先定义一个具有所有对可能性的对象,这允许我们通过键或值轻松找到。
- 将
str
拆分为字符数组,以便我们可以使用每个字母来查找它的对。 - 使用map函数将数组中的每个字符映射到具有字符及其匹配对的数组,从而创建2D数组。
相关链接
捐款说明:
- 请勿添加与任何现有解决方案类似的解决方案。如果您认为它**相似但更好** ,那么尝试合并(或替换)现有的类似解决方案。
- 添加解决方案的说明。
- 将解决方案分为以下类别之一 - 基本 , 中级和高级 。
- 如果您添加了任何**相关的主要内容,**请仅添加您的用户名。 ( 不要 删除任何现有的用户名 )