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); } }