什么是ACM?怎么写acm代码- java 笔试acm常见类型处理。

力扣刷题用的是核心代码模式,而部分面试中用的是ACM模式;由于ACM竞赛题目的输入数据和输出数据一般有多组(不定),并且格式多种多样,所以,如何处理题目的输入输出是对大家的一项最基本的要求。这也是困扰初学者的一大问题。

ACM模式(Algorithm Contest Mode)是指在算法竞赛中所使用的评分模式。在ACM模式下,所有参赛选手通过单个命令行交互式的方式,向评测机提交自己编写的程序。ACM模式下,评测机对每个提交的程序进行评测,返回程序的执行结果与用时信息。

什么是acm呢?白话来讲。所谓acm就是需要能直接在idea或其他编程软件上直接运行的,并且可以自由传入参数以及输出,通过代码运行的复杂度以及内容占有等进行评分。我们平时在letcood中练题时,只需要将代码的核心逻辑写出来,最后return即可,但是这样的代码是无法直接平移到编译程序中编译运行的,因为他缺乏最重要的main函数,以及输入和输出的代码,是练习时为了提高效率省略了,但在同学们笔试时,往往部分企业会叫我们使用自己的编程软件编写再复制到笔试中,那么就会出现核心代码写了,却无法运行的情况。(个人理解,欢迎指正)

以下为常见的三种类型的处理(主要为输入处理)

1.String字符串的处理

1.1单行输入

import java.util.Scanner;

Scanner sc = new Scanner (System.in);

String word1 = scanner.nextLine();
//在这里进行对字符串word1的处理

1.2多行输入

        Scanner scanner = new Scanner(System.in);

        System.out.print("第一个字符串为: ");
        String word1 = scanner.nextLine();

        System.out.print("第二个字符串为: ");
        String word2 = scanner.nextLine();

        // ....

        System.out.print("第n个字符串为: ");
        String wordn = scanner.nextLine();

1.3不定行输入

这里使用了应该boolean类型的continueInput来判断输入台是否还要输入字符串

  Scanner scanner = new Scanner(System.in);

        String mergedString = "";
        boolean continueInput = true;

        while (continueInput) {

            System.out.print("Enter a word (or 'q' to quit): ");
            String input = scanner.nextLine();

            if (input.equals("q")) {
                continueInput = false;
            } else {
               //此处为对字符串的处理
            }
        }

2.array数组的处理

 Scanner scanner = new Scanner(System.in);
    String[] number = scanner.nextLine().split(" ");
    int [] arr = new int[number.length];
        for (int i = 0; i < number.length; i++) {
            arr[i] = Integer.parseInt(number[i]);
        }
    //后续可使用arr[]数组做数据处理

3.list 链表的处理

        Scanner scanner = new Scanner(System.in);


        ListNode dummy1 = new ListNode(-1);
        ListNode dummy2 = new ListNode(-1);
        
        ListNode cur1 = dummy1;
        ListNode cur2 = dummy2;

        String[] params = scanner.nextLine().split(" ");

        for (String x : params) {
            cur1.next = new ListNode(Integer.parseInt(x));
            cur1 = cur1.next;
        }

        String[] params2 = scanner.nextLine().split(" ");

        for (String x : params2) {
            cur2.next = new ListNode(Integer.parseInt(x));
            cur2 = cur2.next;
        }

        //后续可使用dummy1、dummy2进行链表的处理

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值