java codility training Genomic-range-query

后端 未结 30 2742
悲哀的现实
悲哀的现实 2021-02-01 12:47

The task is:

A non-empty zero-indexed string S is given. String S consists of N characters from the set of upper-case English letters A, C, G, T.

<
30条回答
  •  萌比男神i
    2021-02-01 13:34

       static public int[] solution(String S, int[] P, int[] Q) {
        // write your code in Java SE 8
    
        int A[] = new int[S.length() + 1], C[] = new int[S.length() + 1], G[] = new int[S.length() + 1];
    
        int last_a = 0, last_c = 0, last_g = 0;
    
        int results[] = new int[P.length];
        int p = 0, q = 0;
        for (int i = S.length() - 1; i >= 0; i -= 1) {
            switch (S.charAt(i)) {
                case 'A': {
                    last_a += 1;
                    break;
                }
                case 'C': {
                    last_c += 1;
                    break;
                }
    
                case 'G': {
                    last_g += 1;
                    break;
                }
    
            }
            A[i] = last_a;
            G[i] = last_g;
            C[i] = last_c;
        }
    
    
        for (int i = 0; i < P.length; i++) {
            p = P[i];
            q = Q[i];
    
            if (A[p] - A[q + 1] > 0) {
                results[i] = 1;
            } else if (C[p] - C[q + 1] > 0) {
                results[i] = 2;
            } else if (G[p] - G[q + 1] > 0) {
                results[i] = 3;
            } else {
                results[i] = 4;
            }
    
        }
        return results;
    }
    

提交回复
热议问题