Read Phone Number
这是Google of Greater China Test for New Grads of 2014 Round A 第一题,题目: Read Phone NumberSample
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 ,