L2-050 懂蛇语 - java

题目解析

给定m句话,找出每个单词第一个字母相同的一句话

如果有则输出,中间以|分隔
否则将句子原样输出

解题思路

模拟即可

将输入的一行字符串以空格分隔,然后获取字符串数组中每个字母的第一个字符。
然后将获取出来的字符串与当前字符串存入到map当中。

最后在map中找即可。

注:找到的字符串应该以字典序排列,所以还需要sort一下。

代码

import java.io.*;
import java.math.*;
import java.util.*;

public class Main
{
//	按照题目要求获取字符串数组中每个字符串的第一个字符
	static String get(String S)
	{
		StringBuilder res = new StringBuilder(); // 需要上"sb",不然会超时
		String s[] = S.split(" ");
		for (String i : s)
		{
			if (i.length() > 0) res.append(i.charAt(0)); // 如果当前有字符,则获取其第一个字符
		}
		return res.toString();
	}

	public static void main(String[] args) throws IOException
	{
		int n = Integer.valueOf(sc.readLine());
		HashMap<String, ArrayList<String>> tr = new HashMap<String, ArrayList<String>>();
		for (int i = 1; i <= n; i++)
		{
			String a = sc.readLine();
			String b = get(a);
			tr.computeIfAbsent(b, res -> new ArrayList<String>()).add(a); // 获取map中的key为b的值,如果有则获key的值,否则新建一个ArrayList
		}

		int m = Integer.valueOf(sc.readLine());
		while (m-- > 0)
		{
			String a = sc.readLine();
			String b = get(a);
			if (!tr.containsKey(b)) out.println(a); // 如果map中不存在key为b的,则输出a
			else
			{
				ArrayList<String> ar = tr.get(b);
				Collections.sort(ar); // 按照字典序排序
				StringBuilder res = new StringBuilder();
				for (String i : ar) // 将list中的内容按照题目要求拼接起来
					res.append(i).append("|");
				int len = res.length(); // 获取长度
				res.delete(len - 1, len); // 删除最后一个"|"
				out.println(res);
			}

		}

		out.flush();
		out.close();
	}

	static BufferedReader sc = new BufferedReader(new InputStreamReader(System.in));
	static PrintWriter out = new PrintWriter(System.out);

}

Collections.sort

ArrayList
ArrayList

HashMap
computeIfAbsent

computeIfAbsent() 方法对 hashMap 中指定 key 的值进行重新计算,如果不存在这个 key,则添加到 hashMap 中。


computeIfAbsent() 方法的语法为:
hashmap.computeIfAbsent(K key, Function remappingFunction)
注:hashmap 是 HashMap 类的一个对象。


参数说明:
key - 键
remappingFunction - 重新映射函数,用于重新计算值


返回值
如果 key 对应的 value 不存在,则使用获取 remappingFunction 重新计算后的值,并保存为该 key 的 value,否则返回 value。


例如
prices.computeIfAbsent("Shirt", key -> 280);

StringBuilder


团体程序设计天梯赛-练习集-java

赞赏