强训之【参数解析和跳石板】
目录
- 1.参数解析
- 1.1题目描述
- 1.2思路
- 1.3代码
- 2.跳石板
- 2.1题目
- 2.2思路
- 2.3代码
- 3.选择题
1.参数解析
1.1题目描述
在命令行输入如下命令:
xcopy /s c:\ d:\e,
各个参数如下:
参数1:命令字xcopy
参数2:字符串/s
参数3:字符串c:\
参数4: 字符串d:\e
请编写一个参数解析程序,实现将命令行各个参数解析出来。
解析规则:
1.参数分隔符为空格
2.对于用""包含起来的参数,如果中间有空格,不能解析为多个参数。比如在命令行输入xcopy /s “C:\program files” "d:“时,参数仍然是4个,第3个参数应该是字符串C:\program files,而不是C:\program,注意输出参数时,需要将”"去掉,引号不存在嵌套情况。
3.参数不定长
4.输入由用例保证,不会出现不符合要求的输入
数据范围:字符串长度:1\le s\le 1000\1≤s≤1000
进阶:时间复杂度:O(n)\O(n) ,空间复杂度:O(n)\O(n)
输入描述:
输入一行字符串,可以有空格
输出描述:
输出参数个数,分解后的参数,每个参数都独占一行
示例1
输入:
xcopy /s c:\ d:\e
输出:
4
xcopy
/s
c:\
d:\e
1.2思路
xcopy /s c:\ d:\e 这个字符串中间空了三个空格,但是有四个参数,因此我们只需要在遇见空格的时候count++,最后输出count+1的数就是我们的参数个数。
不过这里需要注意,因为我们在双引号里面的算是一个字符串,所以哪怕双引号里面有空格我们以不能计算上,例如:xcopy /s “C:\program files” d:\,这个还是4个参数,C:\program files这个一个整体。
双引号外面的我们直接打印,遇到空格和双引号不打印,并且遇到双引号外面的空格还要换行。但还如果遇到双引号怎么办?我们可以先定义一个flag=1,遇到双引号就异或1此时结果为0,这个时候就在全部打印就可以了,空格也打印,在遇到双引号再异或上1,此时变为1,这个时候空格需要换行,
大家需要注意,flag=0代表在上引号里面,flag=1代表在外面/双引号结束了。
1.3代码
import java.util.*;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String str = sc.nextLine();int count = 0;for (int i = 0; i < str.length(); i++) {//如果碰到双引号,我们就需要i++直到找到下一个双引号if (str.charAt(i) == '"') {do {i++;} while (str.charAt(i) != '"');}if (str.charAt(i) == ' ') {count++;}}System.out.println(count + 1);int flag = 1;for (int i = 0; i < str.length(); i++) {//遇到第一个双引号,flag变为0,//遇到第二个双引号结束后flag重新变为1//只要在打印双引号中的内容的时候flag的值始终为0if (str.charAt(i) == '"') {flag ^= 1;}//除了双引号和特殊空格以外的字符都要打印if (str.charAt(i) != ' ' && str.charAt(i) != '"') {System.out.print(str.charAt(i));}//双引号中的空格需要打印if (str.charAt(i) == ' ' && flag == 0) {System.out.print(str.charAt(i));}//双引号外碰到空格,需要换行if (str.charAt(i) == ' ' && flag == 1) {System.out.println();}}}
}
2.跳石板
2.1题目
描述
小易来到了一条石板路前,每块石板上从1挨着编号为:1、2、3…
这条石板路要根据特殊的规则才能前进:对于小易当前所在的编号为K的 石板,小易单次只能往前跳K的一个约数(不含1和K)步,即跳到K+X(X为K的一个非1和本身的约数)的位置。 小易当前处在编号为N的石板,他想跳到编号恰好为M的石板去,小易想知道最少需要跳跃几次可以到达。
例如:
N = 4,M = 24:
4->6->8->12->18->24
于是小易最少需要跳跃5次,就可以从4号石板跳到24号石板
输入描述:
输入为一行,有两个整数N,M,以空格隔开。 (4 ≤ N ≤ 100000) (N ≤ M ≤ 100000)
输出描述:
输出小易最少需要跳跃的步数,如果不能到达输出-1
示例1
输入:
4 24
输出:
5
2.2思路
将1 - M个石板看做一个结果数组stepNum,每个stepNum[i]储存着从起点到这一步最小的步数,其中0为不
能到达。 从起点开始对stepNum进行遍历,先求i的所有约数(即从stepNum[i]能走的步数),然后更新那
几个能到达的位置的最小步数。如果不能到达则更新为此时位置的最小步数 + 1,如果是能到达的就更新为
min(已记录的最小步数,此处的最小步数 + 1)),遍历一遍后得到结果。
2.3代码
import java.util.*;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[] step = new int[m + 1];for (int i = 0; i < m + 1; i++) {step[i] = Integer.MAX_VALUE;}step[n] = 0;for (int i = n; i < m; i++) {if (step[i] == Integer.MAX_VALUE) {continue;}//求i的约数List<Integer> list = div(i);for (int j : list) {//j代表此时我们一步可以条几个台阶if (i + j <= m && step[i + j] != i) {step[i + j] = Math.min(step[i + j], step[i] + 1);} else if (i + j <= m) {step[i + j] = step[i] + 1;}}}if (step[m] == Integer.MAX_VALUE) {System.out.println(-1);} else {System.out.println(step[m]);}}public static List<Integer> div(int num) {List<Integer> list = new ArrayList<>();for (int i = 2; i * i <= num; i++) {if (num % i == 0) {list.add(i);if (num / i != i) {list.add(num / i);}}}return list;}
}
3.选择题
- 一个关系数据库文件中的各条记录 (B) 。
A 前后顺序不能任意颠倒,一定要按照输入的顺序排列
B 前后顺序可以任意颠倒,不影响库中的数据关系
C 前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果就可能不同
D 前后顺序不能任意颠倒,一定要按照关键字字段值的顺序排列
关系数据库的逻辑性强而物理性弱,因此关系数据库中的各条记录前后顺序可以任意颠倒,不影响库中数据的关系。
2.一名员工可以使用多台计算机,每台计算机只能由一名员工使用,则实体员工和计算机间的联系是(A)
A 一对多
B 多对多
C 多对一
D 一对一
一名员工可以使用多个计算机,所以是1对多
3.下列关于视图的说法错误的是:(B)
A 视图是从一个或多个基本表导出的表,它是虚表
B 视图一经定义就可以和基本表一样被查询、删除和更新
C 某一用户可以定义若干个视图
D 视图可以用来定义新的视图
视图是指计算机数据库中的视图,是一个虚拟表,其内容由蛮询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
视图一经定义就无法修改
不能更新
4.在Mysql中,订单表 ( 订单号,雇员代号,地区代号,订购日期 ) 中订单号为主键,要删除订单中前三年以前的信息, SQL 为:(D)
A delete from 订单表 where 订购日期<getdate()+3
B delete from 订单表 where 订购日期<DATEADD(yy,3,getdate())
C delete from 订单表 where 订购日期<getdate()-3
D delete from 订单表 where 订购日期<DATEADD(yy,-3,getdate())
DATEADD()函数在日期中添加或减去指定的时间间隔。
语法
DATEADD(datepart,number ,date)
datapart参数的取值范围是{yy/yyyy,qq/q,mm/m,dy/y,dd/d,wk/ww,dw/w,hh,mi/n,ss/s,ms ,mcs,ns]
number 是您希望添加的间隔数
date 参数是合法的日期表达式
GETDATEO函数从 SQL Server 返回当前的时间和日期。
mysq1中获取当前日期和时间的函数为now0,mysgl中没有getdate()函数mysq]中也有dateadd()函数,语法为 DATE_ADD(date,INTERVAL expr type)date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
- 负责数据库中查询操作的数据库语言是(C )。
A 数据定义语言
B 数据管理语言
C 数据操纵语言
D 数据控制语言
数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象:表、视图、索引、同义词、聚族等。例如:CREATE TABLE/VIEW/INDEX/SYN/CLUSTERDDL操作是隐性提交的,不能ro11back。
数据操作语言DML
主要负责数据的基本操作,包括查询及增加、剧除、修改等操作。
数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据除的某种特权,并控制数据除操纵事务发生的时间及效果,对数据原实行监视
等。
如:1) GRANT:授权 2) ROLLBACK IWORK] TO[SAVEPOINT1: 网退到某一点,ROLLBACK:回涨回滚命令使数据库状态回到上次最后提交的状态。其格式为: SQL>ROLLBACK。3) COMMIT [WORK]: 提交
- 数据库管理系统是( B)。
A 操作系统的一部分
B 在操作系统支持下的系统软件
C 一种编译系统
D 一种操作系统
7.SQL 语句中修改表结构的命令是(C)
A MODIFY TABLE
B MODIFY STRUCTURE
C ALTER TABLE
D ALTER STRUCTURE
修改表结构的关键字都alter table 表名,再跟具体修改的语句,如:添加表字段
alter table table_name add 字段名称 字段类型
删除表字段
alter table table_name drop 字段名称
修改表字段
alter table table_name change 旧字段名称 新字段名称 字段类型
alter table table_name modify 字段名称 字段类型
8.在sql数据库中,哪个语句能校验整数列 i 的值不小于 1 不大于 10 ?(A)
A i BETWEEN 1 AND 10
B i BETWEEN 0 AND 11
C i IN INTERVAL(0,11)
D i IN INTERVAL(1,10)
9.在学生表 Student 的系别 (Sdept) 属性中查询信息系 (IS) 、数学系 (MA) 和计算机系 (CS) 的学生姓名(Sname) 和性别 (Ssex) ,正确的命名格式应为:(B)
A SELECT Student FROM Sname, Ssex WHERE Sdept IN (‘IS’, ’MA’, ‘CS’)
B SELECT Sname, Ssex FROM Student WHERE Sdept IN (‘IS’, ’MA’, ‘CS’)
C SELECT Sname, Ssex FROM Student WHERE Sdept (IS, MA, CS)
D SELECT Sname, Ssex FROM Student WHERE Sdept LIKE IS, MA, CS
10.SQL 查询语句中 WHERE 、 GROUP BY 、 HAVING 这些关键字区别和用法总结错误的是(D)
A HAVING在查询语句中必须依赖于GROUP BY
B WHERE子句用来限制SELECT语句从表中指定选取的行
C GROUP BY子句用来分组WHERE子句的输出结果集
D HAVING子句用来从分组的结果中筛选列
having是分组查询时,在分组后条件过滤。这里的过滤是针对行来过滤,不是筛选列
相关文章:

强训之【参数解析和跳石板】
目录 1.参数解析1.1题目描述1.2思路1.3代码 2.跳石板2.1题目2.2思路2.3代码 3.选择题 1.参数解析 1.1题目描述 在命令行输入如下命令: xcopy /s c:\ d:\e, 各个参数如下: 参数1:命令字xcopy 参数2:字符串/s 参数…...

Redis队列Stream、Redis多线程详解(三)
Redis中的线程和IO模型 什么是Reactor模式 ? “反应”器名字中”反应“的由来: “反应”即“倒置”,“控制逆转”,具体事件处理程序不调用反应器,而向反应器注册一个事件处理器,表示自己对某些事件感兴趣࿰…...

MySQL统计函数count详解
count()概述 count() 是一个聚合函数,返回指定匹配条件的行数。开发中常用来统计表中数据,全部数据,不为null数据,或者去重数据 count(1)和count()和count(列名)的区别 1.函数说明 count(1):统计所有的记录࿰…...

实验04:图像压缩(DP算法)
1.实验目的: 掌握动态规划算法的基本思想以及用它解决问题的一般技巧。运用所熟悉的编程工具,运用动态规划的思想来求解图像压缩问题。 2.实验内容: 给定一幅图像,求解最佳压缩,使得压缩后的文件最小。 3.实验要求…...

4.19--面试系列之真题版本--redis出现大key怎么解决?Redis 大 Key 对持久化有什么影响?
对于redis出现大key的情况,可以通过以下几种方式来解决: 1.分布式存储:将大key拆分成多个小的key,分别存储在不同的节点上。 2.数据过期:对于大key中不经常使用的数据,可以使用redis自带的过期特性…...

新手在家做自媒体要如何起步?
不少人都想做自媒体来增加自己的收入或者创业,但没有人带领,自己像是无头苍蝇一样,不知道往哪里走。 今天这期内容大周就来给粉丝们分享一点干货,如果对你有所帮助,记得点赞支持一下大周。 1、注册账号 如果你连一个…...

易基因:禾本科植物群落的病毒组丰度/组成与人为管理/植物多样性变化的相关性 | 宏病毒组
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 现代农业通过简化生态系统、引入新宿主物种和减少作物遗传多样性来影响植物病毒的出现。因此,更好理解农业生态中种植和未种植群落中的病毒分布,以及它们之间的病…...

华为OD机试——对称美学(通过率只有8.51%???)
用java写的这道题,两个样例都可以通过,但是提交之后最终的通过率只有8.51%???自己搞了半天一直都是这个通过率,然后用网上说的100%通过率的代码也是一样的结果,最后时间到了还是没有拿到满分&am…...

【三十天精通Vue 3】第十六天 Vue 3 的虚拟 DOM 原理详解
引言 Vue 3 的虚拟 DOM 是一种用于优化 Vue 应用程序性能的技术。它通过将组件实例转换为虚拟 DOM,并在组件更新时递归地更新虚拟 DOM,以达到高效的渲染性能。在 Vue 3 中,虚拟 DOM 树由 VNode 组成,VNode 是虚拟 DOM 的基本单元…...

Arduino ESP8266通过udp获取时间以及同步本地时间方法
Arduino ESP8266通过udp获取时间以及同步本地时间 ✨通过udp获取NTP服务器上的时间戳,然后经过转换,得到当前具体的时间。转换相对复杂,对于获取时间还是相对比较准确。📝通过udp获取时间实现代码 #include <ESP8266WiFi.h> #include <WiFiUdp.h>//填写 WiFi…...

c/c++:char*定义常量字符串,strcmp()函数,strcpy()函数,寻找指定字符,字符串去空格
c/c:char*定义常量字符串,strcmp()函数,strcpy()函数,寻找指定字符,字符串去空格 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c的话, 我所…...

2023年6月DAMA-CDGA/CDGP数据治理认证考试可报名地区公布
2023年4月23日,据DAMA中国官方信息,目前6月DAMA-CDGA/CDGP数据治理认证考试开放报名地区有:北京、上海、广州、深圳、长沙、呼和浩特。目前南京、济南、西安、杭州等地区还在接近开考人数中,打算6月考试的朋友们可以抓紧时间报名啦…...

UDS的0x19服务介绍
什么是 UDS? UEI (Unified Diagnostic Services,统一诊断服务) 是一种在车辆电子控制单元 (ECU) 之间交换诊断信息的标准通信协议,它是OBD-II的某些扩展。利用 UDS 协议,诊断工程师可以访问车辆的各种功能,如读取故障…...

QinQ技术与Portal技术
QinQ 802.1Q-in-802.1Q,是一种扩展VLAN标签技术。在城域网中,需要大量的VLAN来隔离区分不同的用户,但是原有的802.1Q只有12个比特,仅能标识4096个VLANQinQ即在802.1Q的基础上,再增加一层外层标签。使得可以标识4096*40…...

Vue-自定义表单验证(rule,value,callback)详细使用
前言 最近在实际开发中遇到需要验证合同编号是否在数据库已经存在,自定义表单验证。 的表单验证大家都知道form绑定rules,prop绑定值与form.值一样,必填,失去焦点触发 提示信息。 今天我们讲一讲自定义验证规则具体使用场景和它…...

港联证券|TMT板块全线退潮,这些个股获主力逆市抢筹
计算机、电子、传媒、通讯职业流出规模居前。 今天沪深两市主力资金净流出709.92亿元,其中创业板净流出218.36亿元,沪深300成份股净流出187.92亿元。 资金流向上,今天申万一级职业普跌,除了国防军工职业小幅上涨,获主…...

WPF学习
一、了解WPF的框架结构 (第一小节随便看下就可以,简单练习就行) 1、新建WPF项目 xmlns:XML的命名空间 Margin外边距:左上右下 HorizontalAlignment:水平位置 VerticalAlignment:垂直位置 2…...

C#使用WebDriver模拟浏览器操作WEB页面
有时候需要模拟访问页面触发某个功能,可以使用WebDriver来实现这一功能,驱动打开浏览器,并对页面重定向以及对页面写入脚本等操作。 安装Selenium.Chrome,Selenium.Support.UI,Selenium 引入 using OpenQA.Selenium.…...

正则表达式 - 简单模式匹配
目录 一、测试数据 二、简单模式匹配 1. 匹配字面值 2. 匹配数字和非数字字符 3. 匹配单词与非单词字符 4. 匹配空白字符 5. 匹配任意字符 6. 匹配单词边界 7. 匹配零个或多个字符 8. 单行模式与多行模式 一、测试数据 这里所用文本是《学习正则表达式》这本书带的&a…...

银行数字化转型导师坚鹏:银行数字化转型培训方案
目录 一、银行数字化转型培训背景 二、银行数字化转型模型 三、银行数字化转型课程设计思路 四、 银行数字化转型课程基本介绍 五、 银行数字化转型课程设置 六、银行数字化转型课程大纲 七、培训方案实施流程 一、银行数字化转型培训背景 2020年1月3日ÿ…...

多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测
多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测 目录 多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-CNN-…...

Shell知识点(一)
1.echo 命令 echo命令的作用是在屏幕输入一行文本,可以降该命令的参数原样输出。 $ echo hello world hello world 如果想要输出的是多行文本,包含换行符,这时就需要把多行文本放在引号里面 $ echo "<HTML><HEAD><TITLE…...

mysql 索引失效、联合索引失效场景和举例
索引失效 假设有一张user 表,表中包含索引 (id); (name); (birthday); (name,age); 对索引字段进行函数操作 select name from user where year(birthday) 2000;使用模糊查询,查询中使用通配符 select name from user where name like %益达%;使用i…...

快速将PDF转换为图片:使用在线转换器的步骤
PDF文件是一种常见的文档格式,但在某些情况下需要将其转换为图片格式,例如将PDF文件插入PPT演示文稿中。此时,使用在线PDF转换器是一种快速且简便的方法。 本文将介绍如何使用在线转换器将PDF文件转换为图片格式。 步骤1:选择合…...

什么是gpt一4-如何用上gpt-4
怎么使用gpt-4 目前GPT-4还未正式发布或公开,因此也没有详细的对接说明。但是我们可以根据GPT-4的前身GPT-3的应用经验,以及GPT-4的预期功能推测一些可能的使用步骤: 选择适合的GPT-4实现技术:GPT-4可能有不同的实现技术ÿ…...

Docker 相关概念
1、Docker是什么? 如何确保应用能够在这些环境中运行和通过质量检测?并且在部署过程中不出现令人头疼的版本、配置问题,也无需重新编写代码和进行故障修复? 答案就是使用容器。Docker之所以发展如此迅速,也是因为它对…...

STM32平衡小车 TB6612电机驱动学习
TB6612FNG简介 单片机引脚的电流一般只有几十个毫安,无法驱动电机,因此一般是通过单片机控制电机驱动芯片进而控制电机。TB6612是比较常用的电机驱动芯片之一。 TB6612FNG可以同时控制两个电机,工作电流1.2A,最大电流3.2A。 VM电…...

动态加载 JS 文件
动态加载JS文件是指在网页运行过程中通过JavaScript代码向页面中动态添加外部JS文件,这种方式能够提高页面加载速度和用户体验,并且可以帮助网站实现更多的功能和特效。 本文将详细介绍动态加载JS文件的基本原理、优势、注意事项以及具体实现方法&#…...

14、lldb调试指令
LLDB LLDB(Low Lever Debug): 默认内置于Xcode中的动态调试工具.标准的lldb提供了一组广泛的命令,旨在与老版本的GDB命令兼容.除了使用标准配置外,还可以很容易地自定义lldb以满足实际需要. 1.1 lldb语法: <command> [<subcommand> [<subcommand>...]] &l…...

浏览器缓存策略:强缓存和协商缓存
浏览器缓存:其实就是在本地使用的计算机中开辟一个内存区,同时也开辟一个硬盘区,作为数据传输的缓冲区,然后利用这个缓冲区来暂时保护用户以前访问的信息通常浏览器的缓存策略分为两种:强缓存和协商缓存,强…...