当前位置: 首页 > news >正文

强训之【参数解析和跳石板】

目录

  • 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.选择题

  1. 一个关系数据库文件中的各条记录 (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 参数是您希望添加的时间间隔。

  1. 负责数据库中查询操作的数据库语言是(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]: 提交

  1. 数据库管理系统是( 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是分组查询时,在分组后条件过滤。这里的过滤是针对行来过滤,不是筛选列

http://www.lryc.cn/news/62084.html

相关文章:

  • Redis队列Stream、Redis多线程详解(三)
  • MySQL统计函数count详解
  • 实验04:图像压缩(DP算法)
  • 4.19--面试系列之真题版本--redis出现大key怎么解决?Redis 大 Key 对持久化有什么影响?
  • 新手在家做自媒体要如何起步?
  • 易基因:禾本科植物群落的病毒组丰度/组成与人为管理/植物多样性变化的相关性 | 宏病毒组
  • 华为OD机试——对称美学(通过率只有8.51%???)
  • 【三十天精通Vue 3】第十六天 Vue 3 的虚拟 DOM 原理详解
  • Arduino ESP8266通过udp获取时间以及同步本地时间方法
  • c/c++:char*定义常量字符串,strcmp()函数,strcpy()函数,寻找指定字符,字符串去空格
  • 2023年6月DAMA-CDGA/CDGP数据治理认证考试可报名地区公布
  • UDS的0x19服务介绍
  • QinQ技术与Portal技术
  • Vue-自定义表单验证(rule,value,callback)详细使用
  • 港联证券|TMT板块全线退潮,这些个股获主力逆市抢筹
  • WPF学习
  • C#使用WebDriver模拟浏览器操作WEB页面
  • 正则表达式 - 简单模式匹配
  • 银行数字化转型导师坚鹏:银行数字化转型培训方案
  • 多维时序 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积神经网络-长短期记忆网络多变量时间序列预测
  • Shell知识点(一)
  • mysql 索引失效、联合索引失效场景和举例
  • 快速将PDF转换为图片:使用在线转换器的步骤
  • 什么是gpt一4-如何用上gpt-4
  • Docker 相关概念
  • STM32平衡小车 TB6612电机驱动学习
  • 动态加载 JS 文件
  • 14、lldb调试指令
  • 浏览器缓存策略:强缓存和协商缓存
  • 2023年Chat GPT 应用前景分析