Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
超级慢又吃内存的java解. 用了16M内存,汗颜.import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); LinkedHashMap<String, Integer> hash = new LinkedHashMap<String, Integer>(); while (scanner.hasNextInt()) { int n = scanner.nextInt(); for (int i = 0; i < n; i++) { String next = scanner.next(); String code = normalize(next); Integer value = hash.get(code); hash.put(code, value == null ? 1 : value + 1); } } LinkedList<String> list = new LinkedList<String>(); for (Map.Entry<String, Integer> entry : hash.entrySet()) { String key = entry.getKey(); Integer value = entry.getValue(); if (value > 1) { list.add(key + " " + value); } } if (list.isEmpty()) { System.out.println("No duplicates."); return; } Collections.sort(list); for (String s : list) { System.out.println(s); } } private static String normalize(String next) { StringBuilder sb = new StringBuilder(); for (char c : next.toCharArray()) { //@formatter:off if (c == '-') { continue; } //@formatter:on String n = map.get(c); if (n == null) { continue; } if (sb.length() == 3) { sb.append("-"); } sb.append(n); } return sb.toString(); } static HashMap<Character, String> map; static { map = new HashMap<Character, String>(); String[] s = ("A, B, 和C 映射到 2 \n" + "D, E, 和F 映射到 3 \n" + "G, H, 和I 映射到 4 \n" + "J, K, 和L 映射到 5 \n" + "M, N, 和O 映射到 6 \n" + "P, R, 和S 映射到 7 \n" + "T, U, 和V 映射到 8 \n" + "W, X, 和Y 映射到 9 ").split("\\n"); for (String s1 : s) { String[] s2 = s1.split("映射到"); String n = s2[1].trim(); String[] s3 = s2[0].replaceFirst("和", "").split(","); for (String s4 : s3) { String k = s4.trim(); map.put(k.toCharArray()[0], n); } } for (int i = 0; i < 10; i++) { map.put((i + "").toCharArray()[0], i + ""); } } ; } 测试写法 import org.junit.Assert; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import java.io.StringBufferInputStream; /** * @author */ public class MainTest { static { } @DataProvider public Object[][] dp() { return new Object[][]{ {"12\n" + "4873279\n" + "ITS-EASY\n" + "888-4567\n" + "3-10-10-10\n" + "888-GLOP\n" + "TUT-GLOP\n" + "967-11-11\n" + "310-GINO\n" + "F101010\n" + "888-1200\n" + "-4-8-7-3-2-7-9-\n" + "487-3279", "310-1010 2\n" + "487-3279 4\n" + "888-4567 3"} }; } @Test(dataProvider = "dp") public void test(String x, String r) { ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintStream oldout = System.out; System.setOut(new PrintStream(out)); System.setIn(new StringBufferInputStream(x)); Main.main(null); String s = new String(out.toByteArray()); Assert.assertEquals( r,s); } } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator