| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:谁抽空帮忙看下In Reply To:谁抽空帮忙看下 Posted by:alohaking at 2013-11-05 16:09:04 import java.util.Scanner;
public class Main {
private static class Chain{
String phoneNo;
int count;
Chain next;
public Chain(String phoneNo){
this.phoneNo = phoneNo;
this.count = 1;
this.next = null;
}
}
public static void main(String[] args) {
boolean has = false;
int n = 0;
String phoneNo = null;
char[] temp = null;
Chain head = new Chain("0");
Chain next = null;
Scanner cin = new Scanner(System.in);
n = cin.nextInt();
for(int i = 0;i < n; ++i){
phoneNo = cin.next();
temp = phoneNo.toCharArray();
char[] arr = new char[temp.length];
//替换成对应的数字 好久没写switch居然不会写了
for(int j = 0,k = 0;j < temp.length;++j){
if(temp[j] == '-'||temp[j] == 'Q'||temp[j] == 'Z')
continue;
if(temp[j] == 'A'||temp[j] == 'B'||temp[j] == 'C'){
arr[k++]='2';
continue;
}else if(temp[j] == 'D'||temp[j] == 'E'||temp[j] == 'F'){
arr[k++]='3';
continue;
}else if(temp[j] == 'G'||temp[j] == 'H'||temp[j] == 'I'){
arr[k++]='4';
continue;
}else if(temp[j] == 'J'||temp[j] == 'K'||temp[j] == 'L'){
arr[k++]='5';
continue;
}else if(temp[j] == 'M'||temp[j] == 'N'||temp[j] == 'O'){
arr[k++]='6';
continue;
}else if(temp[j] == 'P'||temp[j] == 'R'||temp[j] == 'S'){
arr[k++]='7';
continue;
}else if(temp[j] == 'T'||temp[j] == 'U'||temp[j] == 'V'){
arr[k++]='8';
continue;
}else if(temp[j] == 'W'||temp[j] == 'X'||temp[j] == 'Y'){
arr[k++]='9';
continue;
}
arr[k++] = temp[j];
}
phoneNo = String.valueOf(arr).trim();
next = new Chain(phoneNo);
//链表插入排序
Chain pre = head;
Chain cur = null;
while(true){
if(pre.next == null){//如果到了链表的末尾直接将next加入到链表中
pre.next = next;
break;
}else{
cur = pre.next;//当前元素
String tPhoneNo = cur.phoneNo;
if(phoneNo.compareTo(tPhoneNo) == 0){//如果要加入的电话号码与当前元素的电话号码一致
cur.count++;
break;
}else if(phoneNo.compareTo(tPhoneNo) < 0){//如果在链表中找到第一个比phoneNo大的值则插入到当前元素前面
pre.next = next;
next.next = cur;
break;
}
}
pre = cur;
}
}
next = head.next;
while(next != null){
int count = next.count;
String no = next.phoneNo;
if(count > 1){
System.out.println(no.substring(0,3) + "-" + no.substring(3) + " " + count);
has = true;
}
next = next.next;
}
if(!has){
System.out.println("No duplicates.");
}
}
}
已经o(n)了怎么还是TLE?
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator