第一届山东省ACM——Phone Number(java)

 

Description

We know that if a phone number A is another phone number B’s prefix, B is not able to be called. For an example, A is 123 while B is 12345, after pressing 123, we call A, and not able to call B.

Given N phone numbers, your task is to find whether there exits two numbers A and B that A is B’s prefix.

Input

The input consists of several test cases.

The first line of input in each test case contains one integer N (0<N<1001), represent the number of phone numbers.

The next line contains N integers, describing the phone numbers.

The last case is followed by a line containing one zero.

Output

For each test case, if there exits a phone number that cannot be called, print “NO”, otherwise print “YES” instead.

Sample Input

2 012 012345 2 12 012345 0

Sample Output

NO YES

HINT

 

Source

山东第一届省赛

题目链接:http://acm.upc.edu.cn/problem.php?id=1928

 



 

字符串匹配(intdexOf(String str)),O(n2)

代码:

import java.util.Scanner;
public class Main{
    public static String s[];
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int len[];
        while(sc.hasNextInt()){
            int n=sc.nextInt();
            if(n<=0)
                break;
            s=new String[n];
            len=new int[n];
            for(int i=0;i<n;i++){
                s[i]=sc.next();
                len[i]=s[i].length();
            }
            for(int i=0;i<n-1;i++){
                int k=len[i];
                int temp=i;int d=0;
                String ss;
                for(int j=i+1;j<n;j++){
                    if(k>len[j]){
                        k=len[j];
                        temp=j;
                    }
                }
                if(temp>i){
                    d=len[i];len[i]=len[temp];len[temp]=d;
                    ss=s[i];s[i]=s[temp];s[temp]=ss;
                }
            }
            int ddd=0;
            for(int i=0;i<n-1;i++){
                for(int j=i+1;j<n;j++){
                    int dd=s[j].indexOf(s[i]);
                    if(dd==0){
                        System.out.println("NO");
                        ddd=1;
                        break;
                    }
                }
                if(ddd==1)
                    break;
            }
            if(ddd==0)
                System.out.println("YES");
        }
    }
}
View Code

 

posted @ 2014-04-01 09:45  ABCDL  阅读(392)  评论(0编辑  收藏  举报