3372838_wa.java

来自「北大大牛代码 1240道题的原代码 超级权威」· Java 代码 · 共 75 行

JAVA
75
字号
import java.util.*;
import java.io.*;

public class Main
{
	public static void main(String [] args)	throws IOException
	{
		new Main().run();
	}

	final String delim = "_,.\"():;!? ";

	public void run()	throws IOException
	{
		BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
		String line, words;
		StringTokenizer st;
		TreeMap <String, String> tm = new TreeMap <String, String> ();

		while ((line = br.readLine()) != null)
		{
			st = new StringTokenizer (line, delim, true);
			while (st.hasMoreTokens())
			{
				words = st.nextToken();
				if (delim.indexOf(words) != -1)
				{
					System.out.print(words);
				}
				else
				{
					if (isAbbreviated(words))
					{
						String tmp;

						if ((tmp = tm.get(words.toLowerCase())) != null)
						{
							System.out.print(tmp);
						}
						else
						{
							System.out.print(words);
						}
					}
					else
					{
						int len = words.length();
						
						System.out.print(words);

						if (len > 3)
						{
							String tmp = (words.charAt(0) + new Integer (len - 2).toString() + words.charAt(len - 1)).toLowerCase();
							if (tm.containsKey(tmp))
							{
								tm.remove(tmp);
								tm.put(tmp, null);
							}
							else
							{
								tm.put(tmp, words);
							}
						}
					}
				}
			}
			System.out.println();
		}
	}

	boolean isAbbreviated(String words)
	{
		return words.length() > 2 && Character.isDigit(words.charAt(1));
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?