CSDN编程竞赛·第六期-赛后感受

CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16

努力是为了让自己不平庸,但我主要想获取CSDN勋章!!

前言/背景

        第一次参加CSDN编程竞赛,没什么经验。4道编程题,比赛前我觉得能答对2道题就好了,重在参与,但是比赛完我觉得还是挺简单的,和刷<算法>技能树的题差不多。主要在于算法方面的考核。基础还是得扎实。答题速度很关键。经验很重要。比赛就是要争分夺秒!!

大赛简介

        CSDN APP上,比赛菜单进行参加。比赛含金量一般般。题型主要是刷<算法>技能树。平时的技术基础牢靠。

参赛流程

        报名前,就是在CSDN APP上,我的学习中每个菜单都点击,看到比赛,有报名链接,就直接点击进报名,进行参加。

        比赛过程:不允许复制粘贴超过20次,不允许切换出20次画面。--桌面右侧有一个迅雷图标,我右键关闭,就违反画面规则了。平时粘贴习惯了,习惯性鼠标选中,右键粘贴。最后想不让粘贴,只能一点点敲单词。

        注意事项:比赛就是要争分夺秒!!

参赛经历

        我的参赛主要想获取CSDN勋章!比赛前没什么特别的准备就和平时的状态是一样的,没参加过这种网上比赛,本来做前3道题很快就做完了,最后一道的时候卡住了,想好办法,没有想到比较好的办法,导致时间匆匆过去,当时没想那么多,就想把题完美的答好。还有就是编程过程中的导包也需要自己引入。如果被卡住了的话就快速切换下一题等等。注意合理安排时间。

解题思路

        首先读题,把题读明白了,想解题方法,想到了就按照自己思路进行实现。可以自测!自测按钮在上方,我答道第三题的时候才看到自测这个按钮,进行了自测,自测的话还得必须自己先把预想结果填上才能点击测试,否则不让点击。

经验心得

        一定要争分夺秒,注意时间!

资料分享

        推荐CSDN技能树<算法>,进行刷题!

CSDN编程竞赛·第六期   编程题

1、题目名称:严查枪火

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

输入:3

        ak  sdf hkl

输出:1

import java.util.ArrayList;
import java.util.Scanner;

public class KsTest1 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str_0 = scan.nextLine().trim();
		int n = Integer.parseInt(str_0);
		ArrayList<String> vector = new ArrayList<>();
		for (int i = 0; i < n; i++){
			String str_1 = scan.nextLine().trim();
			vector.add(str_1);
		}
		scan.close();
		int result = solution(n, vector);
		System.out.println(result);
	}
	
	public static int solution(int n, ArrayList<String> vector){
		int result = 0;
		// TODO: 请在此编写代码
		for(String str:vector){
			if("ak".equals(str) || "m4a1".equals(str) || "skr".equals(str)){
				result++;
			}
		}
		return result;
	}

}

2、题目名称:鬼画符门

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

输入:4

        ww

        ee

        ee

        cc

输出:ee

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class KsTest2 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str_0 = scan.nextLine().trim();
		int n = Integer.parseInt(str_0);
		ArrayList<String> vector = new ArrayList<>();
		for (int i = 0; i < n; i++){
		    String str_1 = scan.nextLine().trim();
		    vector.add(str_1);
		}
		scan.close();
		String result = solution(n, vector);
		System.out.println(result);
	}
	
	public static String solution(int n, ArrayList<String> vector){
		String result = "";
		// TODO: 请在此编写代码
		Map<String,Integer> map = new HashMap<>();
		for(String str:vector){
			if(map.containsKey(str)){
				Integer count = map.get(str)+1;
				map.put(str,count);
			}else{
				map.put(str,1);
			}
		}
		List<Map.Entry<String,Integer>> list = new ArrayList(map.entrySet());
		Collections.sort(list,(o1,o2) -> (o2.getValue() - o1.getValue()));
		if(list.size()>0){
			result = list.get(0).getKey();
		}
		return result;
	}

}

3、题目名称:收件邮箱

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

输入:dotdotaaatssatdotat

输出:dot.aa@ssat.at

import java.util.Scanner;

public class KsTest3 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str_0 = scan.nextLine().trim();
		String str = str_0;
		scan.close();
		String result = solution(str);
		System.out.println(result);
	}
	
	public static String solution(String str){
		String result = "";
		// TODO: 请在此编写代码
		String firstStr=str.substring(0,1);
		String lastStr=str.substring(str.length()-1,str.length());
		String string=str.substring(1,str.length()-1);
		string = string.replace("dot",".").replaceFirst("at","@");
		result = firstStr + string + lastStr;
		return result;
	}

}

4、题目名称:最长递增的区间长度

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

无须数组取值:-1e9<=n<=1e9

输入:6
        5 2 3 8 1 9
输出:3

import java.util.ArrayList;
import java.util.Scanner;

public class KsTest4 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str_0 = scan.nextLine().trim();
		int n = Integer.parseInt(str_0);
		String str_1 = scan.nextLine();
		String[] line_list_1 = str_1.trim().split(" ");
		ArrayList<Integer> arr = new ArrayList<>();
		for(int i = 0; i < line_list_1.length; i++){
			arr.add(Integer.parseInt(line_list_1[i]));
		}
		scan.close();
		int result = solution(n, arr);
		System.out.println(result);
	}
	
	public static int solution(int n, ArrayList<Integer> arr){
		int result = 0;
		// TODO: 请在此编写代码
		int num = 0;
		String flg="";
		if (n>1) {
			for(int i=1;i<n;i++){
				int j = i-1;
				Integer before = arr.get(j);
				Integer after = arr.get(i);
				if(before < after){
					num++;
					flg="if";
				}else{
					num = num +1;
					if(num>result){
						result = num;
					}
					num = 0;
					flg="else";
				}
			}
			if("if".equals(flg)){
				num = num + 1;
				if(num>result){
					result = num;
				}
			}
		
		}else {
			result = 1;
		}
		return result;
	}

}

比赛就是要争分夺秒!!加油!!!!

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀神lwz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值