洛谷P1603【斯诺登的密码】

这道题就一个字 坑

思路很简单 就是先把需要对比的数字放到一个数组里 ,然后逐一进行对比,对比成功后进行处理之后放到一个新数组里,对比完成后对新数组排序;基本上就好了;但是有几个坑注意下

  • 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);
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值