题解HJ27 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int count = in.nextInt(); List<String> list = new ArrayList<>(); for (int i = 0; i < count; i++) { list.add(in.next()); } String target = in.next(); int num = Integer.valueOf(in.next()); int result = 0; List<String> resultList = new ArrayList<>(); for (int i = 0; i < count; i++) { if (check(list.get(i), target)) { result++; resultList.add(list.get(i)); } } //字典序排列 resultList = dicSort(resultList); //输出 System.out.println(result); if (result >= num) { System.out.println(resultList.get(num - 1)); } } //检查是否为兄弟单词 public static boolean check(String a, String b) { char[] chars1 = a.toCharArray(); char[] chars2 = b.toCharArray(); Arrays.sort(chars1); Arrays.sort(chars2); if (chars1.length == chars2.length && !a.equals(b) && Arrays.equals(chars1, chars2)) { return true; } else { return false; } } //字典序排列 public static List<String> dicSort(List<String> list) { List<String> resultList = list; Collections.sort(resultList, new Comparator<String>() { @Override public int compare(String o1, String o2) { char[] chars1 = o1.toCharArray(); char[] chars2 = o2.toCharArray(); int i = 0; while (i < chars1.length && i < chars2.length) { if (chars1[i] != chars2[i]) { return chars1[i] - chars2[i]; } else { i++; } } return chars1.length - chars2.length; } }); return resultList; } }
做出来的第一道难题 加油!