原题链接:蓝桥杯算法提高VIP-P1003
解题思路: 先判断检查字符长度和输入字符长度一样,然后再判每个字符出现的次数是否一样。
分步骤判断即可。
注意事项:
参考代码:
import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub /* * 题目 2085: [蓝桥杯][算法提高VIP]P1003 * * 时间限制: 1Sec 内存限制: 128MB 提交: 315 解决: 74 * * 题目描述 * 作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词。不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检查 * 。请编写一个程序 * ,发现这种调整过顺序的关键词。程序的输入有两行,第一行是关键词列表,第二行是待检查的句子。程序的输出为在该句子中所找到的经过顺序调整的关键词 * 。(单词全部为小写,单词之间以一个空格分隔,每一行的单词个数不限) */ Scanner scanner = new Scanner(System.in); String[] arr = scanner.nextLine().split("\\ "); String[] arr2 = scanner.nextLine().split("\\ "); for (String a : arr) { for (int i = 0; i < arr2.length; i++) { Map<Character, Integer> hasmp = new HashMap<Character, Integer>();// 输入字符字母各出现次数 Map<Character, Integer> havemp = new HashMap<Character, Integer>();// 查找关键字字符字母各出现次数 if (a.length() == arr2[i].length()) { // 先确认长度是否相等 for (char c : a.toCharArray()) { // 再确认是否有包含字母 if (havemp.containsKey(c)) { havemp.put(c, havemp.get(c) + 1); } else { havemp.put(c, 1); } } for (char c : arr2[i].toCharArray()) { if (hasmp.containsKey(c)) { hasmp.put(c, hasmp.get(c) + 1); } else { hasmp.put(c, 1); } } //当长度相等,字符出现次数相等 及输出 int count = 0; for (char k : hasmp.keySet()) { if (hasmp.get(k) != havemp.get(k)) { count++; } } if (count == 0) { System.out.print(a + " "); } } } } } }
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复