代码补全
背景
敲代码时,较长的变量或函数名通常推荐使用驼峰命名法(如winnieThePooh
和WinnieThePooh
)或下划线法(如winnie_the_pooh
或Winnie_The_Pooh
等),但是不管三七二十一全部用小写是绝对不推荐的(如winniethepooh
)。为什么?这一题将解释原因。
描述
对于一个仅由大小写字母、下划线、数字的字符串(变量名)\(A\),以大写字母或下划线为断点分为几个部分。
如winnie_the_pooh
分为winnie
the
pooh
三部分。
对于仅仅由小写字母以及数字组成的字符串\(B\),只要存在一种或多种方法,使其中的每一个字符都能 按顺序 与\(A\)中 被分隔开的 几个部分中的 部分 或 全部字符 匹配完成(每一部分必须 从头开始 匹配,且被匹配的部分在原串中位置连续),则代码补全系统会将该变量(字符串\(A\))当作备选变量推送出去。
简单的说就是主流编译器的代码补全功能。与关键词搜索类似,在寻找uighurInternmentCamp
(作为变量名\(A\))时,输入uic
或uii
(字符串\(B\))都可以将这个超长变量作为补全候选。相信这也是固定规则存在的一部分意义。
A:uighurInternmentCamp
B:u_____i_________c___或
B:ui____i_____________
但此时\(A\)串并不能匹配uc
,因为在原串中对应部分不连续。
现在有一群变量名,用户敲了几个字母,请你输出符合条件的变量。
按照命名规则,数字不会出现在首位,当作小写字母处理。
格式
输入
第一行为代表用户输入的仅有数字或小写字母的字符串\(B\),第二行为整数\(N\)
接下来\(N\)行为由大小写字母、下划线、数字的字符串(变量名)\(A\)
输出
输出若干行,将所有的能够匹配的字符串按照输入的前后顺序输出,每行一个字符串。
没有则输出单独一行nope
样例
输入1
cguo80w
8
renJunGDPChaoGuo8000WanMeiYuan
sa_ge_er_wang
junZiYiBuQiangZiZiQiangBuXi
tong_shang_kuan_Yi
hun_Yao_shiTing
jinKeLvYu
jianLiGong_Xun2
faXiao
输出1
renJunGDPChaoGuo8000WanMeiYuan
输入2
sgew
4
sa_ge_er_wang
liangjiaheshudan
QingFengBaoZi
_200jinMaiZiBuHuanJian
输出2
sa_ge_er_wang
样例解释
样例1:
renJunGDPChaoGuo8000WanMeiYuan
C Guo80 W
样例2:
sa_ge_er_wang
s g e w
若样例2第一行输入ljh
则输出nope
,无法输出看似可以匹配的liangjiaheshudan
,为什么?
因为liangjiaheshudan
整体均为小写,无法由固定规则分割,整体看作一个部分,无法匹配ljh
。
若改为liangJiaHeshudan
或者liang_jia_heshudan
即可。
提示
输入推荐使用 ' gets '
' cin.getline '
读取整行
时空限制
1s, 64MiB
数据范围
考虑到实际编程情况,所有字符串长度都小于\(64\)
对于20%的数据满足 \( 1 \leq N \leq 64 \)。
对于100%的数据满足 \( 1 \leq N \leq 89640 \)
题目来源
被404了
信息
- ID
- 1003
- 难度
- 9
- 分类
- (无)
- 标签
- (无)
- 递交数
- 5
- 已通过
- 2
- 通过率
- 40%
- 被复制
- 1
- 上传者