感天动地最笨拙的思路 一点点写完了
JAVA
import java.util.*; public class Main{ public static void main(String[]args){ Scanner sc =new Scanner(System.in); int num =sc.nextInt(); String change[]= new String[num]; String org= new String(); String bro[]= new String[num]; int order; for (int i=0;i<num;i++){ change[i]=sc.next(); } org=sc.next(); order=sc.nextInt(); Main main1=new Main(); int bronum=0; for(String s:change){ if(main1.isbro(org,s)==true){ bro[bronum]=s; bronum++; } } List<String> list=new ArrayList<String>(Arrays.asList(bro)); list.removeIf(Objects::isNull); Collections.sort(list); System.out.println(list.size()); if (order-1<list.size()){ System.out.println(list.get(order-1)); } } public boolean isbro(String a,String b){ if(a.equals(b)){ return false; } if(a.length()!=b.length()){ return false; } int exist[]=new int[a.length()]; char[]asp=a.toCharArray(); char[]bsp=b.toCharArray(); for(int i=0;i<asp.length;i++){ for(int j=0;j<bsp.length;j++){ if (asp[i]==bsp[j]){ exist[i]=1; bsp[j]='\u0000'; break; } } } for(int i=0;i<exist.length;i++){ if(exist[i]==0){ return false; } } return true; } }