题目:给出一系列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); } } }
时间: 2024-10-14 04:29:53