蓝桥试题 算法提高 P1003 JAVA

作为一名网络警察,你的任务是监视电子邮件,看其中是否有一些敏感的关键词。不过,有些狡猾的犯罪嫌疑人会改变某些单词的字母顺序,以逃避检查。请编写一个程序,发现这种调整过顺序的关键词。程序的输入有两行,第一行是关键词列表,第二行是待检查的句子。程序的输出为在该句子中所找到的经过顺序调整的关键词。(单词全部为小写,单词之间以一个空格分隔,每一行的单词个数不限)

输入:
  guns mines missiles
  aameric ssell snug dan iimsssle ot sit neeemis

输出:
  guns missiles
  
思路:刚开始看挺懵的,这道题考点就是集合,排序这两部分的内容,详情看注解吧…

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String[] s1 = scanner.nextLine().split(" ");// 输入两个 字符串
		String[] s2 = scanner.nextLine().split(" ");// 单词之间 分割空格
		scanner.close();                            // 停止输入数据
		List<String> list = new ArrayList<String>();// 集合
		for (String string : s2) {                  // 遍历 s2
			String ans = f(string, s1);             // 调用方法 f
			if (!ans.equals("")) {                  // 不等于 空
				list.add(ans);                      // 存起来
			}
		}
		Collections.sort(list);                     // 集合排序
		for (String string : list) {                // 遍历
			System.out.print(string + " ");         // 输出字符串
		}
	}

	public static String f(String str1, String[] s1) {
		for (String string : s1) {                    // 遍历 s1
			char[] n = str1.toCharArray();          // 强转字符数组
			char[] m = string.toCharArray();
			Arrays.sort(n);                         // 排序
			Arrays.sort(m);
			if (new String(n).equals(new String(m))) {  // 一 一 比 较
				return string;                        // 返回
			}
		}
		return "";                                  // 空串
	}
}

小剧场:纵有疾风起,人生不言弃。

发布了202 篇原创文章 · 获赞 149 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43771695/article/details/105052393