当前位置:编程学习 > JAVA >>

Read Phone Number

这是Google of Greater China Test for New Grads of 2014 Round A 第一题,题目: Read Phone Number
Sample
 
Input
 
3
15012233444 3-4-4
15012233444 3-3-5
12223 2-3
 
Output
 
Case #1: one five zero one double two three three triple four
Case #2: one five zero one double two double three triple four
Case #3: one two double two three
题目非常简单,先按照format将字符串切分,例如3-4-4,将15012233444切分成3个字符串150,1223,3444,然后对每一个字符串,从前往后扫描一遍,记录连续相同字符的个数,然后按照题目给定的规则读,最后将各部分拼接在一起就OK了。
 
package rounda;  
  
import java.util.Scanner;  
  
public class Problem1 {  
       
    public void output(int caseNo,  String res){  
        System.out.println("Case #"+caseNo+": "+res);  
           
    }  
    public String solve(String number,String formator){  
        String[] form = formator.split("-");  
        int beginIndex=0;  
        String res = "";  
        for(int i=0;i<form.length;i++){  
            int n = Integer.parseInt(form[i]);  
            String part = number.substring(beginIndex, beginIndex+n);  
              
            res+=readPart(part)+" ";  
            beginIndex +=n;  
              
        }  
        return res.trim();  
    }  
    public String readPart(String number){  
        int continuous=1;  
        char last = number.charAt(0);  
        String res="";  
        for(int i=1;i<number.length();i++){  
            if(number.charAt(i) == last){  
                continuous++;  
                continue;  
            }else{  
                res+=readContinuous(continuous,last);  
                last = number.charAt(i);  
                continuous = 1;  
            }  
                  
        }  
        res+=readContinuous(continuous,last);  
        return res.trim();  
    }  
    public String readContinuous(int continuous,char last){  
        String res ="";  
        switch(continuous){  
        case 1:  
            res+=charToName(last)+" ";  
            break;  
        case 2:  
            res+="double "+charToName(last)+" ";  
            break;  
        case 3:  
            res+="triple "+charToName(last)+" ";  
            break;  
        case 4:  
            res+="quadruple "+charToName(last)+" ";  
            break;  
        case 5:  
            res+="quintuple "+charToName(last)+" ";  
            break;  
        case 6:  
            res+="sextuple "+charToName(last)+" ";  
            break;  
        case 7:  
            res+="septuple "+charToName(last)+" ";  
            break;  
        case 8:  
            res+="octuple "+charToName(last)+" ";  
            break;  
        case 9:  
            res+="nonuple "+charToName(last)+" ";  
            break;  
        case 10:  
            res+="decuple "+charToName(last)+" ";  
            break;  
        default:  
            for(int k=0;k<continuous;k++)  
                res+=charToName(last)+" ";  
            break;  
        }  
        return res;  
    }  
    public String charToName(char c){  
        int n = c-'0';  
        String res = "";  
        switch(n){  
        case 0:  
            res = "zero";  
            break;  
        case 1:  
            res = "one";  
            break;  
        case 2:  
            res = "two";  
            break;  
        case 3:  
            res = "three";  
            break;  
        case 4:  
            res = "four";  
            break;  
        case 5:  
            res = "five";  
            break;  
        case 6:  
            res = "six";  
            break;  
        case 7:  
            res = "seven";  
            break;  
        case 8:  
            res = "eight";  
            break;  
        case 9:  
            res = "nine";  
            break;  
        }  
        return res;  
    }  
    public static void main(String[] args) {  
        Scanner scanner;  
        Problem1 p = new Problem1();  
   
            scanner = new Scanner(System.in);  
            int T = scanner.nextInt();  
            int count=T;  
            while(count-->0){  
                String number = scanner.next();  
                String formator = scanner.next();  
                String result = p.solve(number,formator);  
                p.output(T-count,   result);  
            }  
    }  
      
}  

 

 
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,