All posts in 德科机考一星题
1.【寻找身高相近的小朋友】
2.【火星文计算】
3.【指定缺陷度最长的元音字串】
4.【消乐游戏】
5.判断字符串子序列
6.整数对最小和
7.【文章片段按区间反转】
8.【最长方连续方波信号】
9.数组拼接
10.【停车场车辆统计】
11.【乱序整数序列两数之和绝对值最小】
12.最大括号深度
13.打印任务排序
14.【单词接龙】
15.数组去重和排序
16.寻找最小数
17.【按身高体重排队】
18.【勾股数组】
19.【乱序整数序列两数之和绝对值最小】
20.【解压报】
21.数据分类
22.【统计射击比赛成绩】
23.服务器广播
24.【查找众数和中位数】
26.【指定缺陷度最长的元音字串】
27.【we a are team[机房]】
28.【字符串中包含的最长的非严格递增连续数字序列长度】
29.【最长的连续子序列】
30.【考勤信息】
31.【寻找相同子串】
32.【检查是否存在满足条件的数字组合】
33.【字符串筛选排序】
34.【仿LISP字符串运算】
36.【内存资源分配】
37.【猴子爬山】
38.【计算疫情扩散时间】
39.【计算GPU算力】
40.【字符串变换最小字符串】
41.【篮球比赛】
42.【连续字母长度】
44.【判断一组不等式是否满足约束并输出最大差】
45.【输出字符串中包含所有整数的最小和】
46.【最大数】
47.【找朋友】
48.【字符统计及重排】
49.【乱序整数序列两数之和绝对值最小】
50.【德州扑克】
51.【靠谱的车】
52.【VLAN资源池】
53.【任务最优调度】
54.【找终点】
55.【拼接URL】
56.【矩阵最大值】
57.【最小传输时延】
58.【高效的任务规划】
59.【组成最大数】
60.【矩形相交的面积】
61.【实现一个简易内存池】
62.【工厂流水线调度】
63.【快递运输】
64.【目录删除】
65.【任务调度问题】
66.【英文输入法单词联想】
67.【求解连续数列】
68.【区间交集】
69.【玩牌高手】
70.【根据日志时间先后顺序对日志进行排序】
71.【分月饼】
71.【滑动窗口最大值】
72.【wave数组找字母游戏】
73.【最小数字】
74.【解密犯罪时间】
75.【任务最优调度】
76.【最大值】
77.【按身高和体重排队】
78.【寻找身高相近的小朋友】
79.【二叉树中序遍历输出】
80.【第k个排列】
81.【求数组中最大n个数和最小n个数的和】
82.【喊7的次数重排】
83.【二叉树用数组来存储】
84.【最大子矩阵和】
85.【磁盘容量排序】
86.【一种字符串压缩表示的解压】
87.【最大花费金额】
88.【最远足迹】
89.【计算面积】
90.【最大矩阵和】
91.【最长广播响应】
92.【二叉树的广度优先遍历】
93.【求字符串中所有整数的最小和】
94.【求最多可以派出多少支团队】
95.【数字反转打印】
96【火锅】
97.【找车位】
98.【敏感字段加密】
99.【字符串统计】
100.【九宫格按键】
101.【报数游戏】
102.【叠积木】
103.【工号不够用了怎么办】
104.【构成的正方形数量】
105.【最长连续子序列】
106.【根据某条件聚类最少交换次数】
107.【跳格子游戏】
1.【寻找身高相近的小朋友】
【寻找身高相近的小朋友】小明今年升学到小学一年级,来到新班级后发现其他小朋友们身高参差不齐,然后就想基于各小朋友和自己的身高差对他们进行排序,请帮他实现排序。
输入描述:
第一行为正整数H和N,0<H<200,为小明的身高,0<N<50,为新班级其他小朋友个数。第第二行为N个正整数H1-HN,分别是其他小朋友的身高,取值范围0<N<50,为新班级其他小朋友个数。 第二行为N个正整数H1-HN,分别是其他小朋友的身高,取值范围0><Hi<200(1<=i<=N),且N个正整数各不相同。
输出描述:
输出排序结果,各正整数以空格分割。和小明身高差绝对值最小的小朋友排在前面,和小明身高差绝对值最大的小朋友排在最后,如果两个小朋友和小明身高差一样,则个子较小的小朋友排在前面。
示例1:
输入
100 10
95 96 97 98 99101 102 103 104 105
输出
99 101 98 102 97103 96 104 95 105
2.【火星文计算】
【火星文计算】已知火星人使用的运算符为#、$,其与地球人的等价公式如下:
x#y = 2x+3y+4
x$y = 3*x+y+2
其中x、y是无符号整数 地球人公式按C语言规则计算 火星人公式中,$的优先级高于#,相同的运算符,按从左到右的顺序计算 现有一段火星人的字符串报文,请你来翻译并计算结果。 输入描述:
火星人字符串表达式(结尾不带回车换行) **输入的字符串说明: **
字符串为仅由无符号整数和操作符(#、$)
组成的计算表达式。例如:123#45#6778
用例保证字符串中,操作数与操作符之间没有任何分隔符。 用例保证操作数取值范围为32位无符号整数。 保证输入以及计算结果不会出现整型溢出。 保证输入的字符串为合法的求值报文,例如:123#45#6778 保证不会出现非法的求值报文,例如类似这样字符串: #4$5 //缺少操作数 4$5# //缺少操作数 4#$5 //缺少操作数 4 $5 //有空格 3+4-5*6/7 //有其它操作符 12345678987654321$54321 //32位整数计算溢出 输出描述:
根据输入的火星人字符串输出计算结果(结尾不带回车换行)
示例
输入:
7#6$5#12 输出:
226 说明:
7#6$5#12=7#(3*6+5+2)#12 =7#25#12 =(2*7+3*25+4)#12 =93#12 =2*93+3*12+4 =226
3.【最长的指定瑕疵度的元音字串】
【最长的指定瑕疵度的元音字串】最长的指定瑕疵度的元音子串 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 开头和结尾都是元音字母(aeiouAEIOU)的字符串为 元音字符串 ,其中混杂的非元音字母数量为其 瑕疵度 。比如: · “a” 、 “aa”是元音字符串,其瑕疵度都为0
· “aiur”不是元音字符串(结尾不是元音字符)
· “abira”是元音字符串,其瑕疵度为2
给定一个字符串,请找出指定瑕疵度的最长元音字符子串,并输出其长度,如果找不到满足条件的元音字符子串,输出0。
子串:字符串中任意个连续的字符组成的子序列称为该字符串的子串。
收起 输入描述: 首行输入是一个整数,表示预期的瑕疵度flaw,取值范围[0, 65535]。 接下来一行是一个仅由字符a-z和A-Z组成的字符串,字符串长度(0, 65535]。 输出描述: 输出为一个整数,代表满足条件的元音字符子串的长度。
示例1 输入 0 asdbuiodevauufgh 输出 3 说明 满足条件的最长元音字符子串有两个,分别为uio和auu,长度为3。
示例2 输入 2 aeueo 输出 0 说明 没有满足条件的元音字符子串,输出0 示例3 输入 1 aabeebuu 输出 5 说明 满足条件的最长元音字符子串有两个,分别为aabee和eebuu,长度为5
4.【消消乐游戏】
【消消乐游戏】游戏规则:输入一个只包含英文字母的字符串,字符串中的两个字母如果相邻且相同,就可以消除。
在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。
输出最终得到的字符串长度。
5.【判断字符串子序列】
【判断字符串子序列】给定字符串target和source,判断target是否为source的子序列。你可以认为target和source 中仅包含英文小写字母,字符串source可能会很长,长度~=500,000,而target是个短字符串,长度<=100。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串,例如,'abc’是’aebycd’的一个子序列,而’ayb’不是。请找出最后一个序列的起始位置。 示例输入: abc abcaybec 示例输出: 3 因为aybec中的abc的a在整个字符串的位置索引是3
6.【整数对最小和】
【整数对最小和】给定两个整数数组array1、array2,数组元素按升序排列。假设从array1、array2中分别取出一个元素可构成一对元素,现在需要取出k对元素,并对取出的所有元素求和,计算和的最小值。 注意:两对元素如果对应于array1、array2中两个下标均相同,则视为同一对元素。
输入描述 输入两行数组array1、array2,每行首个数字为数组大小size(0<size<=100) 0<array1[i]<=1000 0<array2[i]<=1000 接下来一行为正整数k 0<k<=array1.size()*array2.size()
输出描述 满足要求的最小和
示例1
输入
3 1 1 2
3 1 2 3
2
输出
4
7.【按区间反转文章片段】
题目描述:
输入一个英文文章片段,翻转指定区间的单词顺序,标点符号和普通字母一样处理。 例如输入字符串 “I am a developer.”,区间[0,3]则输出 “developer. a am I”。 输入描述:
使用换行隔开三个参数 第一个参数为英文文章内容即英文字符串 第二个参数为反转起始单词下标,下标从0开始 第三个参数为结束单词下标, 输出描述:
反转后的英文文章片段,所有单词之间以一个半角空格分割进行输出
示例
输入:
I am a developer.
1
2
输出:
I a am developer.
输入:
Hello world!
0
1
输出:
world! Hello
说明:
输入字符串可以在前面或者后面包含多余的空格,但是反转后的不能包含多余空格。
输入:
I am a developer.
0
3
输出:
developer. a am I
说明:
如果两个单词见有多余的空格,将反转后单词间的空格减少到只含一个。
输入:
Hello!
0
3
输出:
EMPTY
说明:
指定反转区间只有一个单词,或无有效单词则统一输出EMPTY。
8.【最长方连续方波信号】
【最长方连续方波信号】最长方连续方波信号 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 输入一串方波信号,求取最长的完全连续交替方波信号,并将其输出,如果有相同长度的交替方波信号,输出任一即可,方波信号高位用1标识,低位用0标识,如图: 说明: 1) 一个完整的信号一定以0开始然后以0结尾,即010是一个完整信号,但101,1010,0101不是 2)输入的一串方波信号是由一个或多个完整信号组成 3) 两个相邻信号之间可能有0个或多个低位,如0110010,011000010 4) 同一个信号中可以有连续的高位,如01110101011110001010,前14位是一个具有连续高位的信号 5) 完全连续交替方波是指10交替,如01010是完全连续交替方波,0110不是 输入描述: 输入信号字符串(长度>=3且<=1024): 0010101010110000101000010 注:输入总是合法的,不用考虑异常情况 输出描述: 输出最长的完全连续交替方波信号串: 01010 若不存在完全连续交替方波信号串,输出 -1
示例1
输入
00101010101100001010010
输出
01010
备注:
输入信号串中有三个信号:0 010101010110(第一个信号段) 00 01010(第二个信号段) 010(第三个信号段)
第一个信号虽然有交替的方波信号段,但出现了11部分的连续高位,不算完全连续交替方波,在剩下的连续方波信号串中01010最长
9.【数组拼接】
现在有多组整数数组需要将他们合并成一个新的数组 合并规则,从每个数组里按顺序取出固定长度的内容合并到新的数组,取完的内容会删除掉,如果改行不足固定长度,或者已经为空,则直接取出剩余部分的内容放到新的数组中继续下一行
输入描述 第一 行每次读取的固定长度 长度0<len<10 第二行是整数数组的数目 数目 0<num<10000 第3~n行是需要合并的数组 不同的数组用换行分割 元素之间用逗号分割 最大不超过100个元素
输出描述 输出一个新的数组,用逗号分割
示例1 输入 3 2 2,5,6,7,9,5,7 1,7,4,3,4 输出 2,5,6,1,7,4,7,9,5,3,4,7
说明 获得长度3和数组数目2 先遍历第一行 获得2,5,6 再遍历第二行 获得1,7,4 再循环回到第一行获得7,9,5 再遍历第二行获得3,4 再回到第一行获得7
示例2 输入 4 3 1,2,3,4,5,6 1,2,3 1,2,3,4 输出 1,2,3,4,1,2,3,1,2,3,4,5,6
10.【停车场车辆统计】
题目描述: 特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。 车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位(长度3)。 统计停车场最少可以停多少辆车,返回具体的数目。 输入描述: 整型字符串数组cars[],其中1表示有车,0表示没车,数组长度小于1000。
输出描述: 整型数字字符串,表示最少停车数目。
示例 1:
输入 1,0,1 输出 2 说明 1个小车占第1个车位 第二个车位空 1个小车占第3个车位 最少有两辆车 示例 2:
输入 1,1,0,0,1,1,1,0,1 输出 3 说明 1个货车占第1、2个车位 第3、4个车位空 1个卡车占第5、6、7个车位 第8个车位空 1个小车占第9个车位 最少3辆车
11.【乱序整数序列两数之和绝对值最小】
标题:乱序整数序列两数之和绝对值最小 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
给定一个随机的整数(可能存在正整数和负整数)数组 nums ,请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值,并返回这个两个数(按从小到大返回)以及绝对值。 每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
输入描述:
一个通过空格分割的有序整数序列字符串,最多1000个整数,且整数数值范围是 [-65535, 65535]。
输出描述:
两数之和绝对值最小值 示例1
输入
-1 -3 7 5 11 15
输出
-3 5 2
说明
因为 |nums[0] + nums[2]| = |-3 + 5| = 2 最小,所以返回 -3 5 2
12.【最大括号深度】
现有一字符串仅由( , ) , { , } , [ , ]六种括号组成。若字符串满足以下条件之一,则为无效字符串: 1、任一类型的左右括号数量不相等; 2、存在未按正确顺序(先左后右)闭合的括号。
输出括号的最大嵌套深度,若字符串无效则输出0. 0<=字符串长度<=100000
输入描述: 一个只包( , ) , { , } , [ , ]的字符串。
输出描述: 一个整数,最大括号深度
示例1: 输入:[] 输出:1
13.【打印任务排序】
题目描述 某个打印机根据打印队列执行打印任务。打印任务分为九个优先级,分别采用数字1~9表示,数字越大优先级越高。打印机每次从队列头部取出第一个任务A,然后检查队列余下任务中有没有比A优先级更高的任务,如果有比A优先级高的任务,则将任务A放到队列尾部,否则执行任务A的打印。请编写一个程序,根据输入的打印队列,输出实际打印顺序。
输入描述 函数原型: void printOrder(const int input[], int len, int output[]) 参数input表示打印队列,为1~9(优先级)组成的数组,数组索引0代表头部。对于C/C++参数len代表input数组长度,假定参数合法有效;
14.【单词接龙】
题目描述:
单词接龙的规则是:
用于接龙的单词首字母必须要前一个单词的尾字母相同; 当存在多个首字母相同的单词时,取长度最长的单词,如果长度也相等,则取字典序最小的单词; 已经参与接龙的单词不能重复使用。 现给定一组全部由小写字母组成单词数组,并指定其中的一个单词作为起始单词,进行单词接龙。
请输出最长的单词串,单词串是单词拼接而成,中间没有空格。
输入描述:
输入的第一行为一个非负整数,表示起始单词在数组中的索引K,0 <= K < N。 输入的第二行为一个非负整数,表示单词的个数N。 接下来的N行,分别表示单词数组中的单词。 输出描述:
输出一个字符串,表示最终拼接的单词串。 备注:
单词个数N的取值范围为[1, 20] 单个单词的长度的取值范围为[1, 30]
15.【数组去重和排序】
题目描述: 给定一个乱序的数组,删除所有的重复元素,使得每个元素只出现一次,并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序。
输入描述: 一个数组
输出描述: 去重排序后的数组
示例 1: 输入 1,3,3,3,2,4,4,4,5 1 输出 3,4,1,2,5 1 备注 数组大小不超过100 数组元素值大小不超过100
16.【找最小数】
题目描述:
给一个正整数num1,计算出新正整数num2,num2为num1中移除N位数字后的结果,需要使得num2的值最小 输入: 1.输入的第一行为一个字符串,字符串由0-9字符组成,记录正整数num1,num1长度小于32 2.输入的第二行为需要移除的数字的个数,小于num1长度 示例
10 1 输出0 10200 1 输出200 2615371 4 输出131
17.【按身高和体重排队】
题目描述:
某学校举行运动会,学生们按编号(1、2、3…n)进行标识现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列,对于身高体重都相同的人,维持原有的编号顺序关系。 请输出排列后的学生编号 输入描述:
两个序列,每个序列由N个正整数组成,(0<n<=100)。 第一个序列中的数值代表身高 第二个序列中的数值代表体重 输出描述:
排列结果,每个数值都是原始序列中的学生编号,编号从1开始,身高从低到高,身高相同体重从轻到重,体重相同维持原来顺序。 示例:
输入:
4 100 100 120 130 40 30 60 50 输出:
2134 输入:
3 90 110 90 45 60 45 输出:
132
18.【勾股数元组】
题目描述:
如果三个正整数A B C ,A²+B²=C²则为勾股数 如果ABC之间两两互质,即A与B A与C B与C均互质没有公约数, 则称其为勾股数元组。 请求出给定n m 范围内所有的勾股数元组 输入描述 起始范围 1<n<10000 n<m<10000 输出目描述 abc 保证a<b<c输出格式 a b c 多组勾股数元组 按照a升序b升序 c升序的排序方式输出。 给定范围内,找不到勾股数元组时,输出 Na
案例1 输入 1 20 输出 3 4 5 5 12 13 8 15 17
案例2: 输入 5 10 输出 Na
19.【乱序整数序列两数之和绝对值最小】
题目描述:
时间限制:1秒 | 内存限制:262144K
给定一个随机的整数(可能存在正整数和负整数)数组 nums ,请你在该数组中找出两个数,其和的绝对值(|nums[x]+nums[y]|)为最小值,并返回这个两个数(按从小到大返回)以及绝对值。 每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
输入描述:
一个通过空格分割的有序整数序列字符串,最多1000个整数,且整数数值范围是 [-65535, 65535]。
输出描述:
两数之和绝对值最小值
示例1
输入
-1 -3 7 5 11 15
输出
-3 5 2
说明
因为 |nums[0] + nums[2]| = |-3 + 5| = 2 最小,所以返回 -3 5 2
20.【解压报文】
题目描述: 解压报文 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 为了提升数据传输的效率,会对传输的报文进行压缩处理。输入一个压缩后的报文,请返回它解压后的原始报文。 压缩规则:n[str],表示方括号内部的 str 正好重复 n 次。注意 n 为正整数(0 < n <= 100),str只包含小写英文字母,不考虑异常情况。 " “输入描述: 输入压缩后的报文: 1)不考虑无效的输入,报文没有额外的空格,方括号总是符合格式要求的; 2)原始报文不包含数字,所有的数字只表示重复的次数 n ,例如不会出现像 5b 或 3[8] 的输入; 输出描述: 解压后的原始报文 注: 1)原始报文长度不会超过1000,不考虑异常的情况 示例1 输入 3[k]2[mn] 输出 kkkmnmn 说明 k 重复3次,mn 重复2次,最终得到 kkkmnmn 示例2 输入 3[m2[c]] 输出 mccmccmcc 说明 m2[c] 解压缩后为 mcc,重复三次为 mccmccmcc”
21.【数据分类】
对一个数据a进行分类,分类方法为:此数据a(四个字节大小)的四个字节相加%一个给定的值b,如果得到的结果小于一个给定的值c,则此结果即为数据a的类型;如果得到的结果大于或者等于c,则此结果无效即为数据a的类型无效。比如一个数据a=0x01010101,b=3,按照分类方法计算(0x01+0x01+0x01+0x01)%3=1,所以如果c=2,则此a的类型是1,如果c=1,则此a的类型是无效。输入12个数据,第一个数据为c,第二个数据为b,剩余10个数据为需要分类的数据a。计算数据最多的类型(有效类型)有多少个数据。 输入描述: 输入12个数据,第一个数据为c,第二个数据为b,剩余10个数据为需要分类的数据a。 输出描述: 计算数据最多的类型(有效类型)有多少个数据。 示例1 输入 5、2、1、2、3、4、5、6、7、8、9、10 输出 5
22.【统计射击比赛成绩】
题目描述 给定一个射击比赛成绩单,包含多个选手若干次射击的成绩分数,请对每个选手按其最高3个分数之和进行降序排名,输出降序排名后的选手ID序列。
条件如下:
一个选手可以有多个射击成绩的分数,且次序不固定。 如果一个选手成绩少于3个,则认为选手的所有成绩无效,排名忽略该选手。 如果选手的成绩之和相等,则成绩之和相等的选手按照其ID降序排列。 输入描述:
输入第一行,一个整数N,表示该场比赛总共进行了N次射击,产生N个成绩分数(2<=N<=100)。 输入第二行,一个长度为N整数序列,表示参与每次射击的选手ID(0<=ID<=99)。 输入第三行,一个长度为N整数序列,表示参与每次射击的选手对应的成绩(0<=成绩<=100)。 输出描述: 符合题设条件的降序排名后的选手ID序列。
示例1 输入
13
3,3,7,4,4,4,4,7,7,3,5,5,5
53,80,68,24,39,76,66,16,100,55,53,80,55
输出
5,3,7,4
说明
该场射击比赛进行了13次,参赛的选手为{3,4,5,7}。 3号选手成绩: 53,80,55,最高3个成绩的和为:80+55+53=188。 4号选手成绩:24,39,76,66,最高3个成绩的和为:76+66+39=181。 5号选手成绩:53,80,55,最高3个成绩的和为:80+55+53=188。 7号选手成绩:68,16,100,最高3个成绩的和为:100+68+16=184。 比较各个选手最高3个成绩的和,有3号=5号>7号>4号,由于3号和5号成绩相等且ID号5>3, 所以输出为:5,3,7,4
23.【服务器广播】
题目:服务器连接方式包括直接相连,间接连接。 A 和 B 直接连接, B 和 c 直接连接,则 A 和 c 间接连接。直接连接和间接连接都可以发送广播。 给出一个 N * N 数组,代表 N 个服务器, matrix[i][j] == 1 ,则代表 i 和 j 直接连接;不等于 1 时,代表 i 和 j 不直接连接。 matrix[i][i]== 1 ,即自己和自己直接连接。 matrix[i][j]==matrix[j][i] 。计算初始需要给几台服务器广播,才可以使侮个服务器都收到广播。 输入描述: n * n 矩阵,
[[1,1,0],[1,1,0],[0,0,1]] 1 输出描述:整数
2
24.【查找众数及中位数】
题目描述: 1.众数是指一组数据中出现次数量多的那个数,众数可以是多个 2.中位数是指把一组数据从小到大排列,最中间的那个数,如果这组数据的个数是奇数,那最中间那个就是中位数, 如果这组数据的个数为偶数,那就把中间的两个数之和除以 2,所得的结果就是中位数 3.查找整型数组中元素的众数并组成一个新的数组,求新数组的中位数 输入描述: 输入一个一维整型数组,数组大小取值范围 0 < N < 1000,数组中每个元素取值范围 0 < E < 1000 输出描述: 输出众数组成的新数组的中位数 示例 1: 输入 10 11 21 19 21 17 21 16 21 18 15 输出 21 25.【分糖果】
题目描述:
小明从糖果盒中随意抓一把糖果 每次小明会取出一半的糖果分给同学们 当糖果不能平均分配时 小明可以从糖果盒中(假设盒中糖果足够)取出一个或放回一个糖果 小明至少需要多少次(取出放回和平均分配均记一次)能将手中糖果分至只剩一颗
示例: 输入 :15 输出: 5 输入 :4 输出:2
26.【最长的指定瑕疵度的元音字串】
题目描述:
最长的指定瑕疵度的元音子串 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 开头和结尾都是元音字母(aeiouAEIOU)的字符串为 元音字符串 ,其中混杂的非元音字母数量为其 瑕疵度 。比如: · “a” 、 “aa”是元音字符串,其瑕疵度都为0
· “aiur”不是元音字符串(结尾不是元音字符)
· “abira”是元音字符串,其瑕疵度为2
给定一个字符串,请找出指定瑕疵度的最长元音字符子串,并输出其长度,如果找不到满足条件的元音字符子串,输出0。
子串:字符串中任意个连续的字符组成的子序列称为该字符串的子串。
收起 输入描述: 首行输入是一个整数,表示预期的瑕疵度flaw,取值范围[0, 65535]。 接下来一行是一个仅由字符a-z和A-Z组成的字符串,字符串长度(0, 65535]。 输出描述: 输出为一个整数,代表满足条件的元音字符子串的长度。
示例1 输入 0 asdbuiodevauufgh 输出 3 说明 满足条件的最长元音字符子串有两个,分别为uio和auu,长度为3。
示例2 输入 2 aeueo 输出 0 说明 没有满足条件的元音字符子串,输出0 示例3 输入 1 aabeebuu 输出 5 说明 满足条件的最长元音字符子串有两个,分别为aabee和eebuu,长度为5
27.【we a are team[机房]】
题目描述:
总共有n个人在机房,每个人有一个标号(1<=标号<=n),他们分成了多个团队,需要你根据收到的m条消息判定指定的两个人是否在一个团队中,具体的: 1、消息构成为a b c,整数a、b分别代表两个人的标号,整数c代表指令 2、c == 0代表a和b在一个团队内 3、c == 1代表需要判定a和b的关系,如果a和b是一个团队,输出一行'we are a team',如果不是,输出一行'we are not a team' 4、c为其他值,或当前行a或b超出1~n的范围,输出‘da pian zi' 输入描述: 1、第一行包含两个整数n,m(1<=n,m<100000),分别表示有n个人和m条消息 2、随后的m行,每行一条消息,消息格式为:a b c(1<=a,b<=n,0<=c<=1) 输出描述: 1、c ==1,根据a和b是否在一个团队中输出一行字符串,在一个团队中输出‘we are a team',不在一个团队中输出'we are not a team’ 2、c为其他值,或当前行a或b的标号小于1或者大于n时,输出字符串‘da pian zi' 3、如果第一行n和m的值超出约定的范围时,输出字符串'Null' 输入: 5 7 1 2 0 4 5 0 2 3 0 1 2 1 2 3 1 4 5 1 1 5 1 输出: We are a team We are a team We are a team We are not a team 输入: 5 6 1 2 0 1 2 1 1 5 0 2 3 1 2 5 1 1 3 2 输出: we are a team we are not a team we are a team da pian zi
28.【字符串中包含的最长的非严格递增连续数字序列长度】
题目描述:
输入一个字符串仅包含大小写字母和数字 求字符串中包含的最长的非严格递增连续数字序列长度 比如: 12234属于非严格递增数字序列 示例: 输入 abc2234019A334bc 输出 4 说明: 2234为最长的非严格递增连续数字序列,所以长度为4
aaaaaa44ko543j123j7345677781 aaaaa34567778a44ko543j123j71 345678a44ko543j123j7134567778aa
29.【最长的连续子序列】
题目描述:
有N个正整数组成的一个序列 给定一个整数sum 求长度最长的的连续子序列使他们的和等于sum 返回次子序列的长度 如果没有满足要求的序列 返回-1 案例1: 输入 1,2,3,4,2 6 输出 3 解析:1,2,3和4,2两个序列均能满足要求 所以最长的连续序列为1,2,3 因此结果为3
30.【考勤信息】
题目描述:
公司用一个字符串来表示员工的出勤信息:
absent:缺勤
late:迟到
leaveearly:早退
present:正常上班
现需根据员工出勤信息,判断本次是否能获得出勤奖,能获得出勤奖的条件如下:
缺勤不超过一次;没有连续的迟到/早退;任意连续7次考勤,缺勤/迟到/早退不超过3次
present
present absent present present leaveearly present absent
输出描述:
根据考勤数据字符串,如果能得到考勤奖,输出"true";否则输出"false",对于输入示例的结果应为:
true false
31.【寻找相同子串】
题目描述:
给你两个字符串t和p 要求从t中找到一个和p相同的连续子串,并输出该子串第一个字符的下标 输入描述:
输入文件包括两行 分别表示字符串t和p 保证t的长度不小于p 且t的长度不超过1000000 p的长度不超过10000 输出描述:
如果能从t中找到一个和p相等的连续子串 则输出该子串第一个字符在t中的下标 下标从左到右依次为1,2,3,…; 如果不能,则输出 “No” 如果含有多个这样的子串,则输出第一个字符下标最小的 示例
输入:
AVERDXIVYERDIAN RDXI 输出:
4
32.【检查是否存在满足条件的数字组合】
给定一个正整数数组 检查数组中是否存在满足规则的数组组合 规则: A=B+2C
输入描述 第一行输出数组的元素个数 接下来一行输出所有数组元素 用空格隔开
输出描述 如果存在满足要求的数 在同一行里依次输出 规则里 A/B/C的取值 用空格隔开 如果不存在输出0
示例1: 输入 4 2 7 3 0 输出 7 3 2 说明: 7=3+2*2
示例2: 输入 3 1 1 1 输出 0 说明找不到满足条件的组合
备注: 数组长度在3~100之间 数组成员为0~65535 数组成员可以重复 但每个成员只能在结果算式中使用一次 如 数组成员为 [0,0,1,5] 0出现两次允许,但结果0=0+2*0不允许 因为算式中使用了3个0 用例保证每组数字里最多只有一组符合要求的解
33.【字符串筛选排序】
题目描述: 输入一个由 n 个大小写字母组成的字符串,按照 Ascii 码值从小到大的排序规则,查找字符串中第 k 个最小 ascii 码值的字母(k >= 1),输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为 0)。 k 如果大于字符串长度,则输出最大 ascii 值的字母所在字符串的位置索引,如果有重复的字母,则输出字母的最小位置索引。 输入描述: 第一行输入一个由大小写字母组成的字符串 第二行输入 k,k 必须大于 0,k 可以大于输入字符串的长度 输出描述: 输出字符串中第 k 个最小 ascii 码值的字母所在字符串的位置索引。k 如果大于字符串长度,则输出最大 ascii 值的字母所 在字符串的位置索引,如果第 k 个最小 ascii 码 值的字母存在重复,则输出该字母的最小位置索引。 示例 1: 输入 AbCdeFG 3 输出 5
34.【仿LISP字符串运算】
题目描述 LISP语言唯一的语法就是括号要配对。 形如 (OP P1 P2 …),括号内元素由单个空格分割。 其中第一个元素OP为操作符,后续元素均为其参数,参数个数取决于操作符类型 注意:参数 P1, P2 也有可能是另外一个嵌套的 (OP P1 P2 …) 当前OP类型为add/sub/mul/div(全小写),分别代表整数的加减乘除法。简单起见,所以OP参数个数为2 举例 -输入:(mul 3 -7)输出:-21 输入:(add 1 2) 输出:3 输入:(sub (mul 2 4) (div 9 3)) 输出 :5 输入:(div 1 0) 输出:error 常规方法是用两个栈分别存放操作数和操作符,本文用一个栈来实现,首先从后往前提取操作数和操作符存放在vector,然后判断
35.【5键键盘的输出】
题目描述:
有一个特殊的五键键盘,上面有A、Ctrl-C、Ctrl-X、Ctrl-V、Ctrl-A A键在屏幕上输出一个字母A,Ctrl-C将当前所选的字母复制到剪贴板,Ctrl-X将当前选择的字母复制到剪贴板并清空所选择的字母,Ctrl-V将当前剪贴板的字母输出到屏幕,Ctrl-A选择当前屏幕中所有字母 条件如下:
剪贴板初始为空 新的内容复制到剪贴板会覆盖原有内容 当屏幕中没有字母时,Ctrl-A无效 当没有选择字母时Ctrl-C、Ctrl-X无效 当有字母被选择时A和Ctrl-V这两个输出功能的键,会先清空所选的字母再进行输出 给定一系列键盘输入,输出最终屏幕上字母的数量 输入描述:
输入为一行 为简化解析用数字12345分别代替A、Ctrl-C、Ctrl-X、Ctrl-V、Ctrl-A的输入 数字用空格分割 输出描述:
输出一个数字为屏幕上字母的总数量 示例一
输入:
1 1 1 输出:
3 示例二
输入:
1 1 5 1 5 2 4 4 输出:
2
36.【内存资源分配】
题目描述:
有一个简易内存池,内存按照大小粒度分类,每个粒度有若干个可用内存资源,用户会进行一系列内存申请,需要按需分配内存池中的资源,返回申请结果成功失败列表。 分配规则如下: 分配的内存要大于等于内存申请量,存在满足需求的内存就必须分配,优先分配粒度小的,但内存不能拆分使用。 需要按申请顺序分配,先申请的先分配。 有可用内存分配则申请结果为true,没有可用内存分配则返回false。 注:不考虑内存释放。
输入描述:
第一行为内存池资源列表,包含内存粒度数据信息,粒度数据间用逗号分割,一个粒度信息内部用冒号分割,冒号前为内存粒度大小,冒号后为数量。资源列表不大于1024,每个粒度的数量不大于4096。
第二行为申请列表,申请的内存大小间用逗号分隔。申请列表不大于100000。
如:
64:2,128:1,32:4,1:128 50,36,64,128,127 1 2 输出描述:
输出为内存池分配结果。
如:
true,true,true,false,false 1 示例
输入:
64:2,128:1,32:4,1:128 50,36,64,128,127 1 2 输出:
true,true,true,false,false 1 说明:
内存池资源包含:64K共2个、128K共1个、32K共4个、1K共128个的内存资源;
针对50,36,64,128,127的内存申请序列,分配的内存依次是:64,64,128,NULL,NULL,
第三次申请内存时已经将128分配出去,因此输出结果是:
true,true,true,false,false
37.【猴子爬山】
天一只顽猴想要从山脚爬到山顶 途中经过一个有n个台阶的阶梯,但是这个猴子有个习惯,每一次只跳1步或3步 试问?猴子通过这个阶梯有多少种不同的跳跃方式
输入描述: 输入只有一个这个数n 0<n<50 此阶梯有多个台阶 输出描述: 有多少种跳跃方式
实例: 输入 50 输出 122106097
输入 3 输出 2
38.【计算疫情扩散时间】
计算疫情扩散时间 | 时间限制:1秒 | 内存限制:32768K | 语言限制:不限 在一个地图中(地图由n*n个区域组成),有部分区域被感染病菌。感染区域每天都会把周围(上下左右)的4个区域感染。 请根据给定的地图计算,多少天以后,全部区域都会被感染。
如果初始地图上所有区域全部都被感染,或者没有被感染区域,返回-1 收起 输入描述: 一行N*N个数字(只包含0,1,不会有其他数字)表示一个地图,数字间用,分割,0表示未感染区域,1表示已经感染区域 每N个数字表示地图中一行,输入数据共表示N行N列的区域地图。 例如输入1,0,1,0,0,0,1,0,1,表示地图 1,0,1 0,0,0 1,0,1 输出描述: 一个整数,表示经过多少天以后,全部区域都被感染 示例1 输入 1,0,1,0,0,0,1,0,1 输出 2 说明 1天以后,地图中仅剩余中心点未被感染;2天以后,全部被感染。 示例2 输入 0,0,0,0 输出 -1 说明 无感染区域 示例3 输入 1,1,1,1,1,1,1,1,1 输出 -1 说明 全部都感染 备注: 1<=N<200
39.【计算GPU算力】
为了充分发挥Gpu算力, 需要尽可能多的将任务交给GPU执行, 现在有一个任务数组, 数组元素表示在这1s内新增的任务个数, 且每秒都有新增任务, 假设GPU最多一次执行n个任务, 一次执行耗时1s, 在保证Gpu不空闲的情况下,最少需要多长时间执行完成。
输入描述 第一个参数为gpu最多执行的任务个数 取值范围1~10000 第二个参数为任务数组的长度 取值范围1~10000 第三个参数为任务数组 数字范围1~10000
输出描述 执行完所有任务需要多少秒
例子 输入 3 5 1 2 3 4 5 输出 6
说明,一次最多执行3个任务 最少耗时6s
例子2 输入 4 5 5 4 1 1 1 输出 5
说明,一次最多执行4个任务 最少耗时5s
40.【字符串变换最小字符串】
题目描述:
给定一个字符串s,最多只能进行一次变换,返回变换后能得到的最小字符串(按照字典序进行比较)。 变换规则:交换字符串中任意两个不同位置的字符。 输入描述:
一串小写字母组成的字符串s 输出描述:
按照要求进行变换得到的最小字符串 备注:
s是都是小写字符组成 1<=s.length<=1000 示例
输入:
abcdef 输出:
abcdef 说明:
abcdef已经是最小字符串,不需要交换 输入:
bcdefa 输出:
acdefb 说明:
a和b进行位置交换,可以得到最小字符串
41.【篮球比赛】
篮球(5V5)比赛中,每个球员拥有一个战斗力,每个队伍的所有球员战斗力之和为该队伍的总体战斗力。现有10个球员准备分为两队进行训练赛,教练希望2个队伍的战斗力差值能够尽可能的小,以达到最佳训练效果。给出10个球员的战斗力,如果你是教练,你该如何分队,才能达到最佳训练效果?请输出该分队方案下的最小战斗力差值。
输入描述:
10个篮球队员的战斗力(整数,范围[1,10000]),战斗力之间用空格分隔,如:10 9 8 7 6 5 4 3 2 1
不需要考虑异常输入的场景。
输出描述:
最小的战斗力差值,如:1
示例1
输入
10 9 8 7 6 5 4 3 2 1
输出
1
说明
1 2 5 9 10分为一队,3 4 6 7 8分为一队,两队战斗力之差最小,输出差值1。备注:球员分队方案不唯一,但最小战斗力差值固定是1。
这是一道动态规划的问题,难度较高,而且因为要求均分2组,还不太好转化为典型的背包问题。
在知道这是一道动态规划问题之前,我给出了自己的解法(目前我认为这个解法应该是错误的,但暂时还没有找到可以推翻这种解法的测试用例,所以暂时保留了这个解法)。
其基本思路为:
1.首先将队员按照战斗力排序;
2.为了保证战斗力均衡,可以得到战斗力最强的和最弱的必然分到一组,于是得到第一个小的分组(最强和最弱),期战斗力之和为SA,分到A组
3.在剩下的队伍当中两两组合,寻找战斗力最接近SA的组合,分到B组,其战斗力之和为SB,然后寻找最大最小的组合,然后更新SA(或者SB,这个需要在中间比较,看这个组合是放到SA合适还是SB合适),然后在剩下的组合当中寻找两两组合,使得SA和SB的差值最小,直到最后一组;
4.最后一组需要特殊处理一下,因为可能只有2个队员了,此时需要根据SA和SB的值,合理分配成员,最终得到分组结果。
42.【连续字母长度】
题目描述:
给定一个字符串,只包含大写字母,求在包含同一字母的子串中,长度第 k 长的子串的长度,相同字母只取最长的那个子串。 输入描述:
第一行有一个子串(1<长度<=100),只包含大写字母。 第二行为 k的值 输出描述:
输出连续出现次数第k多的字母的次数。 示例
输入:
AABAAA 2 输出:
1 说明:
同一字母连续出现最多的A 3次 第二多2次 但A出现连续3次 输入:
AAAAHHHBBCDHHHH 3 输出:
2 说明:
同一字母连续出现的最多的是A和H,四次 第二多的是H,3次 43.【素数之积】
**题目:
**RSA加密算法在网络安全世界中无处不在,它利用了极大整数因数分解的难度,数据越大,安全系数越高,给定一个32位整数,请对其进行因数分解,找出是哪两个素数的乘积。