毎日1つのアルゴリズム_3_487-3279_電話番号の統計バッチのフォーマット

5558 ワード

朝、高精度のべき乗を求めるアルゴリズムを作って、内部類をサボって、なんだか申し訳ないので、今日はアルゴリズムの問題をやり直して、気持ちがよくなりました.
タイトルは以下の通りです.
Description
企業は覚えやすい電話番号を使うのが好きだ.電話番号を覚えやすくする方法の一つは、覚えやすい単語やフレーズに書くことです.例えば、スノーテルル大学に電話する必要がある場合は、TUT-GLOPに電話することができます.場合によっては、電話番号の一部の数字だけを単語にスペルすることもあります.夜ホテルに戻ると、310-gino'sに電話してpizzaを予約することができます.電話番号を覚えやすくするもう一つの方法は、番号の数字を覚えやすいようにグループ化することです.必勝客の「3つの10」番号3-10-10-10に電話することで、pizzaを予約することができます.
 
電話番号の標準フォーマットは7桁の10進数で、3番目と4番目の数字の間にコネクタがあります.ダイヤルアップには、アルファベットから数値へのマッピングが用意されています.マッピング関係は次のとおりです.
 
A,B,Cは2にマッピングされる
 
D,E,Fは3にマッピングされる
 
G,H,Iは4にマッピングされる
 
J,K,Lは5にマッピングされる
 
M,N,Oを6にマッピングした.
 
P,R,Sは7にマッピングされる
 
T,U,Vは8にマッピングされる
 
W,X,Yは9にマッピングされる
 
QとZは数字にマッピングされておらず、ハイフンはダイヤルを必要とせず、任意に追加と削除が可能です.TUT-GLOPの標準フォーマットは888-4567310-GINOの標準フォーマットは310-4466、3-10-10-10の標準フォーマットは310-1010です.
 
2つの番号に同じ標準フォーマットがある場合、彼らは同等(同じダイヤル)です.
 
あなたの会社は地元の会社のために電話番号帳を書いています.品質管理の一部として、2つ以上の会社が同じ電話番号を持っているかどうかをチェックしたいと思っています.
 
Input
最初の行は正の整数で、電話番号帳の番号の数(最大100000)を指定します.残りの各行は電話番号です.各電話番号は、数字、大文字(QおよびZを除く)、およびコネクタから構成される.各電話番号にはちょうど7つの数字やアルファベットしかありません.
Output
重複する番号ごとに1行の出力が生成され、出力は番号の標準フォーマットが1つのスペースに続いて、その重複回数です.重複する番号が複数ある場合は、番号の辞書昇順で出力します.入力データに重複番号がない場合は、次の行を出力します.
 
No duplicates.
 
Sample Input
12
4873279
ITS-EASY
888-4567
3-10-10-10
888-GLOP
TUT-GLOP
967-11-11
310-GINO
F101010
888-1200
-4-8-7-3-2-7-9-
487-3279


Sample Output
487-3279 4
888-4567 3
310-1010 2
967-1111 1
310-4466 1
888-1200 1 

 
コードが少し乱れていてうるさいので、レンガを撮ってください.
コード:
import java.util.ArrayList;
import java.util.Scanner;

public class ThePhoneNum {
	
	public static void main(String args[]) {
		String[] tem = new String[8];//              
		tem[3] = "-";//           '-'
		ArrayList<String> list = new ArrayList<String>();//          
		ArrayList<String> memory = new ArrayList<String>();//              
		Scanner scanner = new Scanner(System.in);
		int num = scanner.nextInt();
		int[] count = new int[num]; 		//         
		while ((num--) >= 0) {
			list.add(scanner.nextLine());
		}

		for (int i = 0; i < list.size(); i++) {
			String string = list.get(i);
			String[] temparray = string.split("-");//           "-"
			string = getStr(temparray);//                   
			for (int j = 0; j < string.length(); j++) {
				String temString = string.substring(j, j + 1);
				if (j < 3) {
					if (isLetter(temString)) {	//     
						tem[j] = toNum(temString);//        
					} else {
						tem[j] = string.substring(j, j + 1);//      
					}
				} else {
					if (isLetter(temString)) {
						tem[j + 1] = toNum(temString);
					} else {
						tem[j + 1] = string.substring(j, j + 1);
					}
				}
			}
			if (tem[1] != null) {
				String s = getStr(tem);			//                  
				if(memory.contains(s)){
					count[memory.indexOf(s)]++;//      ,       1
				}else{
					memory.add(s);
				}
				
			}
		}
		for(String s : memory){
			System.out.println(s + " "+ (count[memory.indexOf(s)]+1));//    ,    
		}
	}

	private static String toNum(String temString) {
		// TODO Auto-generated method stub
		char c = temString.charAt(0);
		String s = String.valueOf(c);
		switch (c) {
		case 'a':case 'b':case 'c':case 'A':case 'B':case 'C':
			s = "2";
			break;
		case 'd':case 'e':case 'f':case 'D':case 'E':case 'F':
			s = "3";
			break;
		case 'g':case 'h':case 'i':case 'G':case 'H':case 'I':
			s = "4";
			break;
		case 'j':case 'k':case 'l':case 'J':case 'K':case 'L':
			s = "5";
			break;
		case 'm':case 'n':case 'o':case 'M':case 'N':case 'O':
			s = "6";
			break;
		case 'p':case 'r':case 's':case 'P':case 'R':case 'S':
			s = "7";
			break;
		case 'T':case 'U':case 'V':case 't':case 'u':case 'v':
			s = "8";
			break;
		case 'w':case 'x':case 'y':case 'W':case 'X':case 'Y':
			s = "9";
			break;
		}
		return s;
	}

	static boolean isLetter(String s) {
		char c = s.charAt(0);
		if (c >= 65 && c <= 122) {
			return true;
		} else {
			return false;
		}
	}
	public static String getStr(String[] args){
		String str="";
		for(int i=0;i<args.length;i++){	
			str+=(String)args[i];
		}	
		return str;
	}
}

 
 
作者:jason 0539
微博:http://weibo.com/2553717707
ブログ:http://blog.csdn.net/jason0539(転載は出典をご説明ください)