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

365万博首页 2025-07-27 20:19:10 admin

力扣刷题用的是核心代码模式,而部分面试中用的是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进行链表的处理