优快云编程竞赛报名地址:https://edu.youkuaiyun.com/contest/detail/16
(请不要删掉此地址)
前言/背景
第一次参加这个比赛,总的来说还是比较简单的,但是相对的,发现有人六分钟就做完了,再看看自己,六分钟题都没有读完,这就让我尴尬了。
参赛经历
这次的题还是比较简单的,我都是按照最笨的办法做的。
因为是星期天,由于有其他事情,我就做了两个题。全程java语言
第一题: X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)
//直接本办法 通过equals比较就行
public static int solution(int n, ArrayList<String> vector){
int result = 0;
for(int i = 0; i < n; i++){
if(vector.get(i).equals("ak") || vector.get(i).equals("m4a1") || vector.get(i).equals("skr")){
result++;
}
}
return result;
}
第二题: 鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个程序统计每年消耗数量最多的鬼画符吗?
//思路 把数据添加到map 如果map有就加一 没有就1
public static String solution(int n, ArrayList<String> vector){
String result = "";
// TODO: 请在此编写代码
HashMap<String,Integer> map = new HashMap<>();
int maxCount = 0;
for(int i = 0; i < n; i++){
String tmp = vector.get(i);
//System.out.println(" test:"+tmp+" map:"+map.get(tmp));
if(map.get(tmp) != null){
int tmpMax = map.get(tmp)+1;
//System.out.println(" tmpMax:"+tmpMax);
map.replace(tmp,tmpMax);
if(tmpMax > maxCount){
maxCount = tmpMax;
result = tmp;
}
}else{
map.put(tmp,1);
if(1 > maxCount){
maxCount = 1;
result = tmp;
}
}
}
return result;
}
第三题:已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)
这个我没做,但是我看了,我想的是直接用StringBuder,dot和at分开处理,dot先全部转换(转换方式:通过子串匹配,如何移除以前的,如何把点加入), 转换之后再看前后是否是点,是就转换成dot。对于at,直接从第二个字符找第一个at,然后转换就行(邮箱格式正确那么中间一定有at)。