解题思路: 先判断检查字符长度和输入字符长度一样,然后再判每个字符出现的次数是否一样。
分步骤判断即可。
注意事项:
参考代码:
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++代码)(都当成字符串吧hhhhhhhh)浏览:508 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:640 |
C语言训练-角谷猜想 (C语言代码)浏览:1768 |
A+B for Input-Output Practice (C++代码)浏览:632 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:732 |
C语言程序设计教程(第三版)课后习题9.3 (C语言代码)浏览:2121 |
愚蠢的摄影师 (C++代码)浏览:980 |
数字游戏 (C++代码)浏览:1240 |
C语言程序设计教程(第三版)课后习题10.5 (C语言代码)浏览:612 |
剪刀石头布 (C语言代码)浏览:1519 |