模拟笔试 - 卡码网周赛第十八期(23年科大讯飞提前批笔试真题)

2024-05-24 04:28

本文主要是介绍模拟笔试 - 卡码网周赛第十八期(23年科大讯飞提前批笔试真题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 第一题:

 参考思路解析:(遍历nums中的每个数字,得到不为0的数位即可。

1.导入Scanner类

  • import java.util.Scanner;:引入 Scanner 类,用于读取用户输入。

2.主方法

  • public static void main(String[] args):定义主方法,程序的入口。

3.创建Scanner对象

  • Scanner sc = new Scanner(System.in);:创建 Scanner 对象 sc,用于读取输入。

4.读取数组长度

  • int n = sc.nextInt();:读取数组的长度 n
  • sc.nextLine();:消耗换行符,确保后续读取正确。

5.读取数组元素

  • int[] arr = new int[n];:创建一个长度为 n 的整型数组 arr
  • for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); }:通过循环读取 n 个整数,并存储在数组 arr 中。

6.初始化步数计数器

  • int cnt = 0;:初始化计数器 cnt,用于记录将所有数字变为0所需的步数。

7.遍历数组

  • for (int num : arr) { ... }:遍历数组中的每一个数字。

8.逐位处理每个数字

  • while (num > 0) { ... }:当数字 num 大于0时,进入循环。
  • if (num % 10 != 0) { cnt++; }:如果数字 num 的最后一位不为0,则步数计数器 cnt 加1。
  • num /= 10;:将数字 num 除以10,相当于删除数字的最后一位。

9.输出结果

  • System.out.println(cnt);:输出最终计算得到的步数。
import java.util.Scanner;public class Main {public static void main(String[] args) {// 创建一个扫描器对象,用于读取用户输入Scanner sc = new Scanner(System.in);// 读取数组长度 nint n = sc.nextInt();sc.nextLine(); // 消耗换行符,确保后续输入读取正常// 创建一个数组 arr 用于存储输入的 n 个整数int[] arr = new int[n];for (int i = 0; i < n; i++) {// 读取数组中的每一个元素arr[i] = sc.nextInt();}// 变量 cnt 用于记录将所有数字变为 0 所需的最少步数int cnt =  0;// 遍历数组中的每一个数字for (int num : arr) {// 对于每个数字,逐位处理,直到数字变为 0while (num > 0) {// 如果当前数字的最后一位不为 0if (num % 10 != 0) {// 需要删除这位,因此步数加 1cnt++;}// 将数字除以 10,相当于删除最后一位num /= 10;}}// 输出最终计算得到的步数System.out.println(cnt);}
}

第二题:

 参考版解题思路分析:(先拆分构建子串,再判断是否符合2个条件)

1.读取输入

  • 使用Scanner读取字符串 长度 n,和实际的字符串 内容。并将字符串转换为字符数组“cs”。(常用的输入操作,务必 熟悉)

2.构建子串列表

  • 初始化 一个"LinkedList"集合来存储子串 
  • 使用一个 "StringBuilder" 和一个字符变量"pre" 来构建连续相同字符的子串。
  • 遍历字符数组"cs",当遇到不同的字符时,将当前子串添加到列表中,并重新开始构建新的子串

3.处理子串 

  • 遍历子串列表"list",检查每个子串的长度
  • 如果子串长度是奇数,直接添加到结果列表"res"
  • 如果子串长度是偶数且小于6,输出"-1"并返回。(边界为6:小于6的1-5没有符合条件的情况)
  • 如果长度为偶数且不小于6的子串,拆分为两个符合条件的子串添加到结果列表"res"中;

4.输出结果 (有一些ACM输出格式必须需要熟悉,相关的拆分api方法)

  • 将结果列表转换为字符串,并去除多余的符号(方括号和逗号),最终输出符合条件的子串。
import java.util.*;public class Main {public static void main(String[] args) {// 创建扫描器对象,用于读取用户输入Scanner sc = new Scanner(System.in);// 读取字符串的长度 nint n = sc.nextInt();// 读取下一行(实际的字符串),并将其转换为字符数组sc.nextLine();char[] cs = sc.nextLine().toCharArray();// 创建一个列表来记录每个相同字符的子串List<String> list = new LinkedList<>();// 初始化一个变量 pre 用于记录上一个字符char pre = '.';// 初始化一个 StringBuilder 对象,用于构建当前子串StringBuilder sb = new StringBuilder();// 遍历字符数组for (int i = 0; i < cs.length; i++) {// 如果 pre 是初始值 '.' 或当前字符与 pre 相同if (pre == '.' || cs[i] == pre) {// 更新 pre 为当前字符pre = cs[i];// 将当前字符添加到 StringBuilder 中sb.append(cs[i]);} else {// 否则,将当前 StringBuilder 的内容添加到列表中list.add(sb.toString());// 重新初始化 StringBuilder 和 presb = new StringBuilder();pre = cs[i];// 将当前字符添加到新的 StringBuilder 中sb.append(cs[i]);}}// 将最后一个子串再 手动添加到列表中if (sb != null) list.add(sb.toString());// 创建一个结果列表,用于存储符合条件的子串List<String> res = new LinkedList<>();// 遍历 list 中的每个子串for (String s : list) {// 如果子串的长度是奇数(题目已经限定了n>1)if (s.length() % 2 != 0) {res.add(s);//(那就ok了,是奇数肯定大于等于3,可以直接放res中)} else {// 如果子串的长度是偶数(又分小于6和大于等于6)if (s.length() < 6) {// 如果长度小于6,输出 -1 并返回(没法拆分成符合条件的)System.out.println(-1);return;}else{//否则就是长度为偶数且不小于6的子串,//可以拆分成两个符合条件的子串添加到结果列表 res// 将前3个字符aaa和剩余的字符aaaaa分别添加到结果列表中//大于等于6的偶数 -3,都还是个 大于等于3的奇数!!res.add(s.substring(0, 3)); res.add(s.substring(3));}}}// 输出结果,将结果列表转换为字符串,去除多余的符号System.out.println(res.toString().replace("[", "").replace("]", "").replace(",", ""));}
}

 // 输出结果,将结果列表转换为字符串,去除多余的符号 System.out.println(res.toString().replace("[", "").replace("]", "").replace(",", ""));

String的replace()方法,在 输出格式中很常用!!

务必 熟悉。

第三题:

这篇关于模拟笔试 - 卡码网周赛第十八期(23年科大讯飞提前批笔试真题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997370

相关文章

嵌入式软件常见的笔试题(c)

找工作的事情告一段落,现在把一些公司常见的笔试题型整理一下,本人主要是找嵌入式软件方面的工作,笔试的也主要是C语言、数据结构,大体上都比较基础,但是得早作准备,才会占得先机。   1:整型数求反 2:字符串求反,字符串加密,越界问题 3:字符串逆序,两端对调;字符串逆序,指针法 4:递归求n! 5:不用库函数,比较两个字符串的大小 6:求0-3000中含有9和2的全部数之和 7

基于 Java 实现的智能客服聊天工具模拟场景

服务端代码 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class Serv

3月份目标——刷完乙级真题

https://www.patest.cn/contests/pat-b-practisePAT (Basic Level) Practice (中文) 标号标题通过提交通过率1001害死人不偿命的(3n+1)猜想 (15)31858792260.41002写出这个数 (20)21702664840.331003我要通过!(20)11071447060.251004成绩排名 (20)159644

算法训练营第六十七天 | 卡码网110 字符串接龙、卡码网105 有向图的完全可达性、卡码网106 岛屿的周长

卡码网110 字符串接龙 这题一开始用的邻接表+dfs,不幸超时 #include <iostream>#include <list>#include <string>#include <vector>using namespace std;int minLen = 501;bool count(string a, string b) {int num = 0;for (int i

人工智能在数字病理切片虚拟染色以及染色标准化领域的研究进展|顶刊速递·24-06-23

小罗碎碎念 本期推文主题:人工智能在数字病理切片虚拟染色以及染色标准化领域的研究进展 这一期的推文是我发自内心觉得为数不多,特别宝贵的一篇推文,原因很简单——可参考的文献相对较少&方向非常具有研究意义&现在不卷。 数字病理方向的老师/同学应该清楚,不同中心提供的切片,染色方案是存在差异的,并且还存在各种质量问题,所以我们在数据预处理的时候,通常会先对切片的质量执行一遍筛选,然后再进行染

23.并发

目录 一、一些概念二、进程和线程2.1 概念2.2 多线程导致的问题2.3 使用spawn创建新线程2.4 线程与move闭包 三、消息传递3.1 概念3.2 创建通道3.3 示例3.4 其它测试 四、共享状态并发4.1 互斥器4.2 Mutex的API4.3 多线程共享Mutex1)在多线程之间共享值;2)多线程和多所有权3) 原子引用计数4)RefCell/Rc与 Mutex/Arc的相

价格减免(Lc2288)——模拟

句子 是由若干个单词组成的字符串,单词之间用单个空格分隔,其中每个单词可以包含数字、小写字母、和美元符号 '$' 。如果单词的形式为美元符号后跟着一个非负实数,那么这个单词就表示一个 价格 。 例如 "$100"、"$23" 和 "$6" 表示价格,而 "100"、"$" 和 "$1e5 不是。 给你一个字符串 sentence 表示一个句子和一个整数 discount 。对于每个表示价格的单

24-6-23-读书笔记(七)-《文稿拾零》豪尔赫·路易斯·博尔赫斯(第三辑)

文章目录 《文稿拾零》阅读笔记记录总结 《文稿拾零》   《文稿拾零》超厚的一本书(570+),看得时间比较长,这本书是作者零散时间写的一些关于文学性质的笔记,读起来还是比较无趣的,非常零散,虽然有很多有趣的观点,但连不起来,不像毛姆的读书笔记,简单记录一下了。 阅读笔记记录 P3 桑德堡身上有一种疲倦的忧伤,一种平原傍晚时的忧伤,泥沙浊流的忧伤,无用却又精确回忆的忧伤,一个

2025秋招NLP算法面试真题(二)-史上最全Transformer面试题:灵魂20问帮你彻底搞定Transformer

简单介绍 之前的20个问题的文章在这里: https://zhuanlan.zhihu.com/p/148656446 其实这20个问题不是让大家背答案,而是为了帮助大家梳理 transformer的相关知识点,所以你注意看会发现我的问题也是有某种顺序的。 本文涉及到的代码可以在这里找到: https://github.com/DA-southampton/NLP_ability 问题

模拟木马程序自动运行:Linux下的隐蔽攻击技术

模拟木马程序自动运行:Linux下的隐蔽攻击技术 在网络安全领域,木马程序是一种常见的恶意软件,它能够悄无声息地在受害者的系统中建立后门,为攻击者提供远程访问权限。本文将探讨攻击者如何在Linux系统中模拟木马程序的自动运行,以及他们可能使用的技术手段。 木马自动运行的常见方法 攻击者通常会使用以下几种方法来确保木马在Linux系统中自动运行: 计划任务(Crontab): 攻击者可以通