【代码 -- 基因子序列】基因子序列问题

问题描述

生物的基因都是由4种不同的碱基组成,一般用A,T、 G、C表示这4种碱基。基因可以用按顺序表达的一串碱基来表 ,例如ATCACAGGT最近,小明最近在关注一个特别的碱基序列S(S也是由A,T, G、 C组成),他发现,如果一个基因中如果可以按出现的顺序提取出一些碱基和S正好相等,则这个基因可能具备某种性质。例如,当S-TCG时,我们可以从基因ATCACAGGT中提出出第2、3.7个碱基和S相等,而无法从基因CGT提取出一部分碱基与S相等。当然,能提取的位置可能是多样的,比如我们可以从基因ATCACAGGT中提出出第2、58个碱基和S相等。小明想知道,在相等时从基因中提取的最后一个碱基的序号最小是多少。

代码
package Ring1270.pra.java01;
import java.util.Locale;
import java.util.Scanner;
/**
 * https://www.lanqiao.cn/courses/2786/learning/?id=67029  DNA */public class C_02DNA {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Input special base pairs S:");
        String S = scanner.nextLine().toUpperCase(Locale.ROOT);
        System.out.println("Input base pairs DNA:");
        String DNA = scanner.nextLine().toUpperCase(Locale.ROOT);
        For F = new For();
        System.out.println(F.for01(S,DNA,S.length()-1) + 1);
    }
}
class For {
  public int for01(String S, String DNA, int i){
      char[] D = S.toCharArray();
      int n;
      if (i == 0) {
          n=DNA.indexOf(D[0]);
      }else {
          n=DNA.indexOf(D[i],for01(S,DNA,i-1));
      }
      return n;
  }
}

image

你可能感兴趣的:(java)