题解 | #DNA序列#

DNA序列

http://www.nowcoder.com/practice/e8480ed7501640709354db1cc4ffd42a

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.next();
        int n = in.nextInt();
        int cnt;
        Map<String,Integer> hm = new LinkedHashMap<>();
        int i = 0;
        //将子串以及CG出现的次数存入LinkedHashMap
        while(i<=s.length()-n){
            cnt = 0;
            String s1 = s.substring(i,n+i);
            for(int j = 0; j<s1.length(); j++){
                if(s1.charAt(j) == 'G' || s1.charAt(j) == 'C'){
                    cnt++;
                }
            }
            if(!hm.containsKey(s1)){
                hm.put(s1,cnt);
            }
            i++;
        }
        List<Integer> al = new ArrayList<>();
        //取出LinkedHashMap中的value,存入list中
        for(Map.Entry<String,Integer> me : hm.entrySet()){
            al.add(me.getValue());
        }
        //降序排序
        al.sort(new Comparator<Integer>(){
            public int compare(Integer i1,Integer i2){
                return i2.intValue() - i1.intValue();
            }
        });
        //第一次value == 最大值时输出Key
        for(Map.Entry<String,Integer> me : hm.entrySet()){
            if(me.getValue() == al.get(0)){
                System.out.print(me.getKey());
                break;
            } 
        }
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
09-29 11:19
门头沟学院 Java
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务