Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

下面1002的代码还能怎么优化?

Posted by jerryhouse at 2012-06-06 16:53:50 on Problem 1002
我开始使用了java中的TreeMap解决1002题,但是要用时5000ms左右,后来采用了HashMap,也要将近4000ms左右,我想知道我的代码应该怎么优化?代码如下:

public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int testNum = Integer.parseInt(scanner.nextLine());
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		char[] array = new char[7];
		for (int i = 0; i < testNum; i++) {
			String line = scanner.nextLine();
			int index = 0;
			for (int j = 0; j < line.length(); j++) {
				char c = line.charAt(j);
				if (c >= 'A' && c <= 'R')
					array[index++] = (char) ((2 + (c - 'A') / 3) + '0');
				else if (c == 'S')
					array[index++] = '7';
				else if (c >= 'T' && c <= 'Y')
					array[index++] = (char) ((8 + (c - 'T') / 3) + '0');
				else if (c >= '0' && c <= '9')
					array[index++] = c;
			}
			String key = String.valueOf(array);
			if (map.containsKey(key))
				map.put(key, map.get(key) + 1);
			else
				map.put(key, 1);
		}

		ArrayList<String> list = new ArrayList<String>(map.keySet());
		Collections.sort(list);
		StringBuilder sbBuilder = new StringBuilder();
		for (String key : list)
			if (map.get(key) != 1)
				sbBuilder.append(key.substring(0, 3)).append('-')
						.append(key.substring(3)).append(' ')
						.append(map.get(key)).append('\n');
		if (sbBuilder.length() < 3)
			System.out.println("No duplicates.");
		else
			System.out.println(sbBuilder);
	}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator