华为2017上机题(北京优招)

挑大写字符

这里写图片描述
解题思路
水题

import java.util.Scanner;

public class Main{
    public static void main(String[]args){
        Scanner cin=new Scanner(System.in);
        while(cin.hasNext()){
            String str=cin.nextLine();
            StringBuilder res=new StringBuilder("");
            int n=str.length();
            for(int i=0;i<n;i++){
                char tmp=str.charAt(i);
                if(tmp==' '||(tmp>='A'&&tmp<='Z'))res.append(String.valueOf(tmp));
            }
            System.out.println(res.toString());
        }
    }
}

剩余的文件数

这里写图片描述
解题思路
水题
注意:如果摘除的文件数大于当前的文件数,则将当前的文件全部摘除。

import java.util.Scanner;

public class Main{
    public static void main(String[]args){
        Scanner cin=new Scanner(System.in);
        int res=0;
        while(cin.hasNext()){
            String str=cin.next();
            if(str.equals("end")){
                System.out.println("current "+res);
                res=0;
                continue;
            }
            int num=cin.nextInt();
            if(str.equals("binding"))res+=num;
            if(str.equals("remove"))res-=num;
            if(res<0)res=0;
        }
    }
}

定时器

这里写图片描述
解题思路
直接模拟吧。。。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Main{
    public static void main(String[]args){
        Scanner cin=new Scanner(System.in);
        int res=0;
        int ans=0;
        Map<Integer,Integer>id=new HashMap<Integer,Integer>();
        Map<Integer,Integer>start=new HashMap<Integer,Integer>();
        Map<Integer,Integer>order=new TreeMap<Integer,Integer>();
        while(cin.hasNext()){
            String str=cin.next();
            if(str.equals("end")){
                boolean flag=false;
                for(int i=0;i<ans;i++){
                    int idx=order.get(i);
                    if(idx==-1)continue;
                    int time=id.get(idx);
                    if(time>0){
                        flag=true;
                        System.out.println("timer:"+idx+","+(time));
                    }
                }
                if(!flag)System.out.println("none");
                res=0;
                ans=0;
                id=new HashMap<Integer,Integer>();
                order=new HashMap<Integer,Integer>();
                start=new HashMap<Integer,Integer>();
                continue;
            }
            char a=str.charAt(0);
            if(a=='e'){
                int t=Integer.parseInt(str.substring(7));
                for(int idx:id.keySet()){
                    int time=id.get(idx);
                    id.put(idx, time-t);
                    if(time-t<=0){
                        int ord=start.get(idx);
                        order.put(ord, -1);
                    }
                }
                //System.out.println("x"+Integer.parseInt(str.substring(7)));
            }else if(a=='s'){
                if(str.charAt(2)=='o'){
                    int idx=Integer.parseInt(str.substring(10));
                    //System.out.println("y"+idx);
                    if(id.containsKey(idx)){
                        id.put(idx, -1);
                        int ord=start.get(idx);
                        order.put(ord, -1);

                    }
                }else{
                    String[] s=str.substring(11).split(",");
                    int idx=Integer.parseInt(s[0]);
                    int time=Integer.parseInt(s[1]);
                    //System.out.println("z"+idx+" "+time);
                    id.put(idx, time);
                    start.put(idx, ans);
                    order.put(ans, idx);
                    ans++;
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值