陈旺


私信TA

用户名:cw0824ly

访问量:10932

签 名:

等  级
排  名 127
经  验 7713
参赛次数 2
文章发表 61
年  龄 18
在职情况 学生
学  校 湖北生物科技职业学院
专  业

  自我简介:

TA的其他文章

解题思路:  先判断检查字符长度和输入字符长度一样,然后再判每个字符出现的次数是否一样。

                分步骤判断即可。

注意事项:

参考代码:

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 人评分

  评论区

  • «
  • »