题目描述
给定一个可存储若干单词的字典,找出指定单词的所有相似单词,并且按照单词名称从小到大排序输出。
单词仅包括字母,但可能大小写并存(大写不一定只出现在首字母)。
相似单词说明:给定一个单词X,如果通过任意交换单词中字母的位置得到不同的单词Y,那么定义Y是X的相似单词,如abc、bca即为相似单词(大小写是不同的字母,如a和A算两个不同字母)。
字典序排序: 大写字母<小写字母。同样大小写的字母,遵循26字母顺序大小关系。
即A<B<C<…<X<Y<Z<a<b<c<…<x<y<z. 如Bac<aBc<acB<cBa.
输入描述
第一行为给定的单词个数N(N为非负整数)
从第二行到地N+1行是具体的单词(每行一个单词)
最后一行是指定的待检测单词(用于检测上面给定的单词中哪些是与该指定单词是相似单词,该单词可以不是上面给定的单词)
输出描述
从给定的单词组中,找出指定单词的相似单词,并且按照从小到大字典序排列输出,中间以空格隔开
如果不存在,则输出null(字符串null)
用例
输入 | 4 abc dasd tad bca abc |
输出 | abc bca |
说明 | 在给定的输入种,与abc是兄弟单词的是abc bca,且输出按照字典序大小排序,输出的所有单词以空格隔开 |
输入 | 4 abc dasd tad bca abd |
输出 | null |
说明 | 给定的单词组中,没有与给定单词abd是兄弟单词,输出为null(字符串null) |
题目解析
简单的排序题,逻辑请看代码。
Java算法源码
package quicktest; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Scanner; import java.util.StringJoiner; /** * @Author: liliangxing * private code share in https://gitee.com/liliangxing/ * public code share in https://github.com/liliangxing/ * @Description: 给定一个可存储若干单词的字典,找出指定单词的所有相似单词,并且按照单词名称从小到大排序输出。 * <p> * 单词仅包括字母,但可能大小写并存(大写不一定只出现在首字母)。 * <p> * 相似单词说明:给定一个单词X,如果通过任意交换单词中字母的位置得到不同的单词Y,那么定义Y是X的相似单词,如abc、bca即为相似单词(大小写是不同的字母,如a和A算两个不同字母)。 * <p> * 字典序排序: 大写字母<小写字母。同样大小写的字母,遵循26字母顺序大小关系。 * <p> * 即A<B<C<…<X<Y<Z<a<b<c<…<x<y<z. 如Bac<aBc<acB<cBa. * <p> * 输入描述 * 第一行为给定的单词个数N(N为非负整数) * <p> * 从第二行到地N+1行是具体的单词(每行一个单词) * <p> * 最后一行是指定的待检测单词(用于检测上面给定的单词中哪些是与该指定单词是相似单词,该单词可以不是上面给定的单词) * <p> * 输出描述 * 从给定的单词组中,找出指定单词的相似单词,并且按照从小到大字典序排列输出,中间以空格隔开 * <p> * 如果不存在,则输出null(字符串null) * <p> * 用例 * 输入 4 * abc * dasd * tad * bca * abc * 输出 abc bca * 说明 在给定的输入种,与abc是兄弟单词的是abc bca,且输出按照字典序大小排序,输出的所有单词以空格隔开 * 输入 4 * abc * dasd * tad * bca * abd * 输出 null * 说明 给定的单词组中,没有与给定单词abd是兄弟单词,输出为null(字符串null) * <p> * Bac * acB * cBa * aBc */ public class Details128600839_a { 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> result = new ArrayList<>(); String sample = scanner.next(); findSimilar(list, sample, result); sort(result); System.out.println(result.isEmpty() ? null : String.join(" ", result)); } private static void sort(List<String> result) { Collections.sort(result); } private static void findSimilar(List<String> list, String sample, List<String> result) { char[] sampleChars = sample.toCharArray(); for (String checkStr : list) { if (checkStr.length() != sample.length()) { continue; } boolean similarFlag = true; for (char sampleChar : sampleChars) { if (checkStr.indexOf(sampleChar) == -1) { similarFlag = false; break; } } if (similarFlag) { result.add(checkStr); } } } }
标签:输出,abc,Java,OD,bca,单词,给定,机试,null From: https://www.cnblogs.com/liliangxing/p/17134897.html