bekitty

我不会讲大道理,可我心里有一杆秤。 我看这个世界很苛刻,可我的心里很宽容。 我不需要权力与利益,可是我需要公平与正义。 我始终知道正道难行,可不得不行。

导航

Poj1002- StringTokenizer & ArrayList & Set

Posted on 2013-06-08 15:31  bekitty  阅读(171)  评论(0编辑  收藏  举报
package Poj1002;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Scanner;

import java.util.Set;

import java.util.StringTokenizer;

import java.util.TreeSet;

public class Cici_1002 {

    // delete the hyphen

    public static String deletehyphen(String ipt) {

        String tmpipt1 = null, tmpipt2 = null;

        int loc = 0;

        int numofmin;

        for (;; loc++) {

            numofmin = ipt.indexOf("-", loc);

            if (numofmin == -1)

                break;

            else {

                tmpipt1 = ipt.substring(0, numofmin);

                tmpipt2 = ipt.substring(numofmin + 1);

                ipt = tmpipt1 + tmpipt2;

            }
            ;

        }

        return ipt;

    }

    // replace the char

    public static String str_replace(String from, String to, String source) {

        StringBuffer bf = new StringBuffer("");

        StringTokenizer st = new StringTokenizer(source, from, true);

        while (st.hasMoreTokens()) {

            String tmp = st.nextToken();

            if (tmp.equals(from)) {

                bf.append(to);

            } else {

                bf.append(tmp);

            }

        }

        return bf.toString();

    }

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        Scanner cin = new Scanner(System.in);

        int time = cin.nextInt();

        int j = 0;

        ArrayList directory = new ArrayList();

        while (cin.hasNext()) {

            String ipt = cin.next();

            String output = deletehyphen(ipt);

            int changenumA = 2;

            char letter = 'A';

            while (changenumA <= 9) {

                for (int i = 0; i < 3; i++, letter++) {

                    if (letter == 'Q')

                    {

                        i = i - 1;

                    } else {

                        output = str_replace(String.valueOf(letter),
                                String.valueOf(changenumA), output);

                    }

                }

                changenumA++;

            }

            directory.add(output.substring(0, 3) + "-" + output.substring(3));

            j++;

            if (j == time)
                break;

        }

        Set uniqueSet = new TreeSet(directory);

        Set set = new TreeSet();

        for (String temp : uniqueSet) {

            if (Collections.frequency(directory, temp) > 1) {

                set.add(temp + " " + Collections.frequency(directory, temp));

            }

            else if (Collections.frequency(directory, temp) == 1)

                uniqueSet.remove(uniqueSet);

        }

        for (String temp : set)

            System.out.println(temp);

    }

}