这道题就一个字 坑
思路很简单 就是先把需要对比的数字放到一个数组里 ,然后逐一进行对比,对比成功后进行处理之后放到一个新数组里,对比完成后对新数组排序;基本上就好了;但是有几个坑注意下
- 0-20只对比正规的是不行的; 不正规的那 几个列出来的也得对比
- 数字如果不是两位的要补0,如果是第一个数字 就不用补了
- 还要考虑一个特例,啥都没查到的话,输出0
代码如下
package xinshoucun;
import java.util.Scanner;
import static java.util.Arrays.sort;
public class P1603 {
public static void main(String [] args){
String mm="zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen twenty";
String[] num=mm.split(" ");
Scanner cin=new Scanner(System.in);
String str=cin.nextLine();
str=str.toLowerCase();
String[] tt=str.split(" ");
int[] findnum=new int[6];
int h=0;
for(int i=0;i<tt.length;i++){
if(tt[i].equals("a")||tt[i].equals("first")||tt[i].equals("another")){
findnum[h]=1;
h++;
continue;
}
if(tt[i].equals("second")||tt[i].equals("both")){
findnum[h]=4;
h++;
continue;
}
if(tt[i].equals("third")){
findnum[h]=9;
h++;
continue;
}
for(int r=1;r<21;r++){
if(tt[i].equals(num[r])){
findnum[h]=(r*r)%100;
h++;
break;
}
}
}
sort(findnum);
StringBuffer target=new StringBuffer("");
boolean flag=false;
for(int i=0;i<6;i++)
if(findnum[i]!=0){
if(!flag) {
flag = true;
}else{
if(findnum[i]<10)
target.append("0");
}
target.append(findnum[i]);
}
if(flag)
System.out.println(target);
else
System.out.println(0);
}
}