题解 | #查找兄弟单词#
查找兄弟单词
https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68
- 读入,一行数据多种类型,字典根据N遍历读取,其他依次读入接收,字典可能重复不可以用Set
- 筛选,长度,自己,是否由给定字母组成
- 较多使用Arrays,equals比较两个数组内容是否相等,sort排序无返回值,
- 遍历判断较为复杂,因此对二者进行字典序之后的数组比较(是否相同字母组成)
- 排序,上述结果字典序
- 输出,筛选结果和给定位比较,有则同时输出内容,否则只输出个数
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); //字典中可能有重复单词, List<String> list = new ArrayList<>(); for (int i = 0; i < n; i++) { list.add(scanner.next()); } List<String> sortedList = new ArrayList<>(); //查找的单词 String brother = scanner.next(); char[] bc = brother.toCharArray(); Arrays.sort(bc); int k = scanner.nextInt(); //筛选 for (String s : list) { //System.out.println(s); if (s.length() != brother.length()){//添加删除 continue; } if (s.equals(brother)){//自己 continue; } char[] schar = s.toCharArray(); Arrays.sort(schar); boolean flag = Arrays.equals(schar, bc); if (flag){ sortedList.add(s); } } //sortedSet.stream().forEach(s -> System.out.println(s)); System.out.println(sortedList.size()); if (sortedList.size() > 0 && k <= sortedList.size()){ Collections.sort(sortedList); System.out.println(sortedList.get(k-1)); } } // }