又一道小题

Posted 望山海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了又一道小题相关的知识,希望对你有一定的参考价值。

题目:给出一系列DNA字母串(高中生物知识可知仅含ACTG四个字母),以逆序数作为评判标准,从好到坏排序。逆序数:在n个元素的任意排列中,当某两个元素的先后次序与标准次序不同时,就说有1个逆序。一个排列中所有逆序总数叫做这个排列的逆序数。

方法:先求每个字符串的逆序数,再将字符串按逆序数排列。

 

代码抄自GitHub:

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int len = in.nextInt(), test = in.nextInt();
        String[] list = new String[test];
        for(int i=0;i<test;i++){
            list[i] = in.next();
        }
        Arrays.sort(list,new Comp());
        for(int i=0;i<list.length;i++){
            System.out.println(list[i]);
        }
    }

    private static class Comp implements Comparator<String> {

        public int compare(String o1, String o2) {
            Integer count1 = 0, count2 = 0;
            for (int i = 1; i < o1.length(); i++) {
                for(int j = i; j>0;j--){
                    if(o1.charAt(j)<o1.charAt(j-1)){
                        char temp = o1.charAt(j);
                        o1 = o1.substring(0,j-1)+o1.charAt(j)+o1.charAt(j-1)+o1.substring(j+1,o1.length());
                        count1++;
                    }
                    if(o2.charAt(j)<o2.charAt(j-1)){
                        char temp = o2.charAt(j);
                        o2 = o2.substring(0,j-1)+o2.charAt(j)+o2.charAt(j-1)+o2.substring(j+1,o2.length());
                        count2++;
                    }
                }
            }
            return count1.compareTo(count2);
        }

    }
}

 

以上是关于又一道小题的主要内容,如果未能解决你的问题,请参考以下文章

由一道小题谈谈JS的new操作符

一道小题

帮忙做一道C语言小题,求2到100的素数,素数是指,只能被一和整除,望给出解释,用for语句做出,

关于理解python类的小题

两个小题

这两个代码片段之间有区别吗?如果有,那又如何? [复制]