poj1002_487-3279
简单的字符串处理,数据量比较大(E5),查找效率不高会超时。
一开始用TreeSet,可是无法解决重新插入时的次数增加问题,因为TreeSet无法索引到具体某个元素。后来改用TreeMap,问题迎刃而解。
一开始用TreeSet,可是无法解决重新插入时的次数增加问题,因为TreeSet无法索引到具体某个元素。后来改用TreeMap,问题迎刃而解。
代码
1import java.io.*;
2import java.util.*;
3import java.math.*;
4class Main
5{
6 public static char[] numberMap = new char[300];
7 public static void main(String[] args)
8 {
9 getMap();
10 Scanner sc = new Scanner(System.in);
11
12 int N = sc.nextInt();
13 sc.nextLine();
14 //String[] strAry = new String[N];\
15 String str;
16 StringBuffer[] strBufs = new StringBuffer[N];
17
18
19 for(int i = 0; i < N; i++)////read
20 {
21 str = sc.nextLine();
22 StringBuffer strbuf = new StringBuffer();
23 char[] charAry = str.toCharArray();
24 for(int j = 0; j < charAry.length; j++)
25 {
26 if(charAry[j] != '-')
27 strbuf.append(numberMap[charAry[j]]);
28 }
29 strBufs[i] = strbuf;
30 }
31
32 ////
33 /**//*for(StringBuffer strt : strBufs)
34 {
35 System.out.println("strt=" + strt);
36 }*/
37 //
38 TreeMap<String, Integer> trmap = new TreeMap<String, Integer>();
39 for(StringBuffer buft2 : strBufs)
40 {
41 if(trmap.get(buft2.toString()) != null)
42 {
43 int times = trmap.get(buft2.toString());
44 trmap.put(buft2.toString(), times + 1);
45 }
46 else
47 {
48 trmap.put(buft2.toString(), 1);
49 }
50 }
51 Set<String> keyset = trmap.keySet();
52 int haveout = 0;
53 for(String buf3 : keyset)
54 {
55 int times = trmap.get(buf3);
56 if(times > 1)
57 {
58 StringBuffer outbuf = new StringBuffer();
59 outbuf.append(buf3.toCharArray(), 0, 3);
60 outbuf.append('-');
61
62 outbuf.append(buf3.toCharArray(), 3, 4);
63
64 System.out.println(outbuf + " " + times);
65 haveout = 1;
66 }
67 }
68 if(haveout == 0)
69 {
70 System.out.println("No duplicates.");
71 }
72
73
74 }
75 public static void getMap()
76 {
77 numberMap['A'] = '2';
78 numberMap['B'] = '2';
79 numberMap['C'] = '2';
80
81 numberMap['D'] = '3';
82 numberMap['E'] = '3';
83 numberMap['F'] = '3';
84
85 numberMap['G'] = '4';
86 numberMap['H'] = '4';
87 numberMap['I'] = '4';
88
89 numberMap['J'] = '5';
90 numberMap['K'] = '5';
91 numberMap['L'] = '5';
92
93 numberMap['M'] = '6';
94 numberMap['N'] = '6';
95 numberMap['O'] = '6';
96
97 numberMap['P'] = '7';
98 numberMap['R'] = '7';
99 numberMap['S'] = '7';
100
101 numberMap['T'] = '8';
102 numberMap['U'] = '8';
103 numberMap['V'] = '8';
104
105 numberMap['W'] = '9';
106 numberMap['X'] = '9';
107 numberMap['Y'] = '9';
108
109 numberMap['1'] = '1';
110 numberMap['2'] = '2';
111 numberMap['3'] = '3';
112 numberMap['4'] = '4';
113 numberMap['5'] = '5';
114 numberMap['6'] = '6';
115 numberMap['7'] = '7';
116 numberMap['8'] = '8';
117 numberMap['9'] = '9';
118 numberMap['0'] = '0';
119 }
120}
121
1import java.io.*;
2import java.util.*;
3import java.math.*;
4class Main
5{
6 public static char[] numberMap = new char[300];
7 public static void main(String[] args)
8 {
9 getMap();
10 Scanner sc = new Scanner(System.in);
11
12 int N = sc.nextInt();
13 sc.nextLine();
14 //String[] strAry = new String[N];\
15 String str;
16 StringBuffer[] strBufs = new StringBuffer[N];
17
18
19 for(int i = 0; i < N; i++)////read
20 {
21 str = sc.nextLine();
22 StringBuffer strbuf = new StringBuffer();
23 char[] charAry = str.toCharArray();
24 for(int j = 0; j < charAry.length; j++)
25 {
26 if(charAry[j] != '-')
27 strbuf.append(numberMap[charAry[j]]);
28 }
29 strBufs[i] = strbuf;
30 }
31
32 ////
33 /**//*for(StringBuffer strt : strBufs)
34 {
35 System.out.println("strt=" + strt);
36 }*/
37 //
38 TreeMap<String, Integer> trmap = new TreeMap<String, Integer>();
39 for(StringBuffer buft2 : strBufs)
40 {
41 if(trmap.get(buft2.toString()) != null)
42 {
43 int times = trmap.get(buft2.toString());
44 trmap.put(buft2.toString(), times + 1);
45 }
46 else
47 {
48 trmap.put(buft2.toString(), 1);
49 }
50 }
51 Set<String> keyset = trmap.keySet();
52 int haveout = 0;
53 for(String buf3 : keyset)
54 {
55 int times = trmap.get(buf3);
56 if(times > 1)
57 {
58 StringBuffer outbuf = new StringBuffer();
59 outbuf.append(buf3.toCharArray(), 0, 3);
60 outbuf.append('-');
61
62 outbuf.append(buf3.toCharArray(), 3, 4);
63
64 System.out.println(outbuf + " " + times);
65 haveout = 1;
66 }
67 }
68 if(haveout == 0)
69 {
70 System.out.println("No duplicates.");
71 }
72
73
74 }
75 public static void getMap()
76 {
77 numberMap['A'] = '2';
78 numberMap['B'] = '2';
79 numberMap['C'] = '2';
80
81 numberMap['D'] = '3';
82 numberMap['E'] = '3';
83 numberMap['F'] = '3';
84
85 numberMap['G'] = '4';
86 numberMap['H'] = '4';
87 numberMap['I'] = '4';
88
89 numberMap['J'] = '5';
90 numberMap['K'] = '5';
91 numberMap['L'] = '5';
92
93 numberMap['M'] = '6';
94 numberMap['N'] = '6';
95 numberMap['O'] = '6';
96
97 numberMap['P'] = '7';
98 numberMap['R'] = '7';
99 numberMap['S'] = '7';
100
101 numberMap['T'] = '8';
102 numberMap['U'] = '8';
103 numberMap['V'] = '8';
104
105 numberMap['W'] = '9';
106 numberMap['X'] = '9';
107 numberMap['Y'] = '9';
108
109 numberMap['1'] = '1';
110 numberMap['2'] = '2';
111 numberMap['3'] = '3';
112 numberMap['4'] = '4';
113 numberMap['5'] = '5';
114 numberMap['6'] = '6';
115 numberMap['7'] = '7';
116 numberMap['8'] = '8';
117 numberMap['9'] = '9';
118 numberMap['0'] = '0';
119 }
120}
121