CSDN竞赛六期总结

简介: 1、严查枪火2、鬼画符门3、收件邮箱4、最长递增的区间长度

1、严查枪火


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


输入描述: 第一行输入枪支的数量,后边输入枪支的名称

输出描述: 输出需要按照私藏枪火来关押的人


代码展示:


import java.util.ArrayList;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int result=0;
        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();
        for (int i = 0; i < vector.size(); i++) {
            if (vector.get(i).equals( "ak")){
                result++;
            }else if (vector.get(i).equals( "m4a1")){
                result++;
            }else if (vector.get(i).equals("skr")){
                result++;
            }
        }
        System.out.println(result);
    }
}


示例:


输入:
3
Dsd
ak
232asd
输出:1


2、鬼画符门


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


输入描述: 输入鬼画符的数量,然后输入各种鬼画符

输出描述: 输出消耗数量最多的鬼画符


代码展示:


import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
    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 = "";
        Map<String, Integer> map = new HashMap<>();
        for (int i = 0; i < vector.size(); i++) {
            Integer j = 1;
            if (map.get(vector.get(i)) != null) {
                j = map.get(vector.get(i)) + 1;
            }
            map.put(vector.get(i), j);
        }
        int max = 1;
        for (String s : map.keySet()) {
            if (map.get(s) > max) {
                result = s;
                max = map.get(s);
            }
        }
        if (max == 1) {
            result = vector.get(0);
        }
        System.out.println(result);
    }
}


示例:


输入:5
blue
blue
red
red
red
输出:red


3、收件邮箱


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


输入描述: 输入字符串str.(1<=strlen(str)<=1000)

输出描述: 输出转化后的格式


代码展示:


package test03;
import java.util.Scanner;
public class Main {
    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 = "";
        str = str.replace("at", "@");
        result = str.replace("dot", ".");
        if (result.charAt(0) == '.') {
            result = "dot" + result.substring(1);
        }
        if (result.charAt(0) == '@') {
            result = "at" + result.substring(1);
        }
        if (result.charAt(result.length() - 1) == '.') {
            result = result.substring(0, result.length() - 1) + "dot";
        }
        if (result.charAt(result.length() - 1) == '@') {
            result = result.substring(1) + "at";
        }
        while (true) {
            if (result.indexOf('@') != result.lastIndexOf('@')) {
                int j = result.lastIndexOf('@');
                result = result.substring(0, j) + "at" + result.substring(j + 1);
            } else {
                System.out.println(result);
            }
        }
    }
}


示例:


输入:mxyatoxcoderdotcom
输出:mxy@oxcoder.com

4、最长递增的区间长度


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


输入描述: 输入一个数组

输出描述: 输出递增区间的长度


代码展示:


package test04;
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
    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 num = 1;
        int result = 0;
        for (int i = 0; i < n - 1; i++) {
            if (arr.get(i) < arr.get(i + 1)) {
                num++;
                if (num >= result) {
                    result = num;
                }
            } else {
                num = 1;
            }
        }
        if (n == 1) {
            result = 1;
        }
        System.out.println(result);
    }
}


示例:


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


目录
相关文章
|
6月前
|
小程序 JavaScript Java
计算机专业毕业设计(论文+系统)_kaic
计算机专业毕业设计(论文+系统)_kaic
|
测试技术 UED
【CSDN第五期竞赛】说说自己的感受吧
【CSDN第五期竞赛】说说自己的感受吧
89 0
【CSDN 2022年度征文】不负韶光,以梦为马
【CSDN 2022年度征文】不负韶光,以梦为马
|
算法 C语言
【CSDN编程竞赛·第四期】个人参赛经历和个人建议
大家好,我前不久参加了官方举办的CSDN编程比赛,官方举办了四期,第一期的时候没看到,错过了,后面的每一期我都参加了,总的感觉来说,还可以。下面我具体说说第四期相关经验吧。
|
存储
【CSDN编程竞赛 第六期】我的第一场编程竞赛
我的第一场编程竞赛解题思路。
150 0
【CSDN编程竞赛 第六期】我的第一场编程竞赛
CSDN竞赛第六期第二题(C++)
鬼画符门,每年都会统计自己宗门鬼画符消耗的数量,往年一直是大师兄管理,但是这次鬼艺接手了,你能帮鬼艺写一个程序统计每年消耗数量最多的鬼画符吗? 注解(这题是一道找出出现次数最多的字符串的一道题目) 输入描述: 第一行输入整数n.(1<=n<=1000)以下n行输入n个字符串,代表消耗的鬼画符。 输出描述: 输出消耗数量最多的鬼画符(字符串),无需考虑多种鬼画符消耗数量相同的情况。 示例1 输入 5 red red green green hen 输出 red
159 0
|
机器学习/深度学习 数据挖掘
干货|机器学习基石精选文章链接
下面这部分内容列出了机器学习基石的精选文章。
197 0
干货|机器学习基石精选文章链接