问题形容
生物的基因都是由 4 种不同的碱基形成, 个别用 A, T,G、c 示意这 4 种碱基。碱基之间能够配对形成碱基对, 在配对时只能 A 和 T 配对, G 和 c 配对 。配对的碱基对按某种程序连接成螺旋的梯子状, 组成了基因。
一般而言, 示意一个基因只须要应用一测的碱 T 基序列即可。例如, 应用 AGTC 来示意一个基因片段时, 可知其对应的另一侧的基因片段是 TCAG 当初给了一段较长的基因片段 L 和一段较短的基因片段 s, 请问基因片段 s 是否能和 L 中的某一段正好配对。咱们说一段基因能和另一段基因配对是指这段基因中的每个碱基和另一段中对应地位的碱基配对。因碱基具备方向性, 因而在配对的时候不能倒序。例如, 若 L =ATCAAATCG, S=TTTAG, 则 S 能和 L 中的一段正好配对, 配对的段为 AAATC, 它是从 L 的第 4 个地位开始的。
例如, 若 L =ATCAAATCG, S=TTTAG, 则 S 能和 L 中的一段正好配对, 配对的段为 AAATC, 它是从 L 的第 4 个地位开始的。
代码
package Ring1270.pra.java01;
import java.util.Locale;
import java.util.Scanner;
/**
* DNA base pairs * */public class C_01String {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);
System.out.printf("Input system DNA:");
String L = scanner.nextLine().toUpperCase(Locale.ROOT);
System.out.printf("Input your DNA:");
String S = scanner.nextLine().toUpperCase(Locale.ROOT);
StringBuffer stringBuffer = new StringBuffer();
char[] C = S.toCharArray();
for (int i = 0; i < C.length; i++) {if ('A' == C[i]) {C[i] = 'T';
stringBuffer.append(C[i]);
continue;
}
if ('T' == C[i]) {C[i] = 'A';
stringBuffer.append(C[i]);
continue;
}
if ('C' == C[i]) {C[i] = 'G';
stringBuffer.append(C[i]);
continue;
}
if ('G' == C[i]) {C[i] = 'C';
stringBuffer.append(C[i]);
continue;
}
}
System.out.println(stringBuffer);
System.out.println(L.indexOf(String.valueOf(stringBuffer)) + 1);
}
}