poj1002_487-3279

poj1002_487-3279
简单的字符串处理,数据量比较大(E5),查找效率不高会超时。
一开始用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(), 03);
 60                outbuf.append('-');
 61                
 62                outbuf.append(buf3.toCharArray(), 34);
 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

你可能感兴趣的:(poj1002_487-3279)