【CSDN编程竞赛】参赛经历分享及AK代码分享

CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16
(请不要删掉此地址)

前言/背景

CSDN竞赛是我同学推荐给我参加的,那天我看到他拿了个CSDN的一等奖获奖证书到实验室来,于是得知CSDN编程竞赛。

这是我第一次参加,没想到这次题目这么简单的,于是咔咔咔很快就AK了🤣

大赛简介

竞赛考试时间:9月18日 8:30-11:00(作答时间2小时)

主办方:CSDN

活动时间:9月8日-21日(竞赛时间截止9.18)

竞赛考试时间:9月18日 8:30-11:00(作答时间2小时)

获奖名单公布:9月23日,在本页面公布获奖名单链接

获奖用户信息收集:9月27日

奖品发放:9月30日后7个工作日内

在这里插入图片描述

参赛经历

我以前也参加过很多别的比赛,比如数学建模、蓝桥杯、湖南省程序设计竞赛等,目前已经获得校级及以上奖项十余项了,省级国家级的也有五六项,算得上是一名老竞赛者了。

目前正在准备考研,所以也很久没有参加比赛了。

解题代码

第一题

X国最近开始严管枪火。 像是“ak”,“m4a1”,“skr”。都是明令禁止的。 现在小Q查获了一批违禁物品其中部分是枪支。
小Q想知道自己需要按照私藏枪火来关押多少人。 (只有以上三种枪被视为违法)

public static int solution(int n, ArrayList<String> vector){
	int result = 0;
	for (String s : vector) {
		boolean conditions = s.equals("ak") || s.equals("m4a1") || s.equals("skr");
		if (conditions) result++;
	}
	return result;
}

第二题

鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理, 但是这次鬼艺接手了, 你能帮鬼艺写一个 程序统计每年消耗数量最多的鬼画符吗?

public static String solution(int n, ArrayList<String> vector){
	HashMap<String, Integer> hashMap = new HashMap<>();
	for (String s : vector) {
		int count;
		if (hashMap.containsKey(s)) {
			count = hashMap.get(s) + 1;
		} else {
			count = 1;
		}
		hashMap.put(s, count);
	}
	final int[] count = {0};
	final String[] res = {""};
	hashMap.forEach( (s,integer) -> {
		if (integer > count[0]) {
			count[0] = integer;
			res[0] = s;
		}
	} );
	return res[0];
}

第三题

已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用
的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)

public static String solution(String str){
	int at = str.indexOf("at", 1);
	str = str.substring(0, at) + "@" + str.substring(at + 2);
	str = str.replace("dot", ".");
	if (str.charAt(str.length() - 1) == '.' ) 
		str = str.substring(0, str.length() - 1) + "dot";
	if (str.charAt(0) == '.') 
		str = "dot" + str.substring(1);
	return str;
}

第四题

给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3

public static int solution(int n, ArrayList<Integer> arr){
	int result = 1;
	int temp = 1;
	for (int i = 1 ; i < arr.size() ;i++) {
		temp = arr.get(i) > arr.get(i - 1) ? temp + 1 : 1;
		result = Math.max(result , temp);
	}
	return result;
}

经验心得

像ACM这块的话,建议多刷题,刷的多了就有经验了,遇到不会的就去找视频学一下,还有数据结构这些,系统的学习了之后再去多刷题,也可以巩固所学的知识。

本次竞赛的bug

系统好像有一点问题,我刚进比赛界面的时候,就一直白板,上面有几个小字显示登陆中(忘记截屏了),然后我刷新进去了之后,它就显示我已经是第四次进去比赛界面了😢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值