题意整理:
S。给定一个目标字符串和若干候选字符串,候选字符串可能重复。对于任意一个候选字符串,若它满足以下全部条件,则称该候选字符串与目标字符串匹配:
一个匹配候选字符串的匹配度定义为该候选字符串的长度,长度越长,匹配度越高。
需要统计每个不同的匹配候选字符串在候选序列中出现的次数,并按照如下顺序输出:
约束条件:
100。输入内容由若干个字符串组成,相邻字符串之间用一个或多个空白字符(空格或换行)分隔。空白字符只作为分隔符,具体数量不固定。
第一个字符串为目标字符串,从第二个字符串开始,每个字符串都是随机字符串序列中的一个候选字符串。
对于每个匹配的候选字符串,输出一行,包含该字符串及其出现次数,中间用一个空格分隔。
匹配结果按匹配长度由大到小输出;匹配长度相同时,按字符串字典序由小到大输出。
如果没有任何候选字符串匹配,则输出一行 null。
输入
hello hello hell help he hello hi hell h
输出
hello 2
hell 2
he 1
h 1
说明
目标字符串为 "hello"。候选 "hello" 出现 2 次,"hell" 出现 2 次,"he" 出现 1 次,"h" 出现 1 次。它们都满足长度不超过目标长度,并且与目标串开头逐字符一致,因此都是匹配候选。
候选 "help" 的第 4 个字符为 "p",而目标对应位置为 "l",不满足前缀一致;候选 "hi" 的第 2 个字符与目标不同。这两个候选被排除。
匹配度即候选长度 ∣candidate∣。按长度从大到小排列:"hello" 长度 5,"hell" 长度 4,"he" 长度 2,"h" 长度 1。因此输出四行。
输入
a a b a ab
输出
a 2
说明
目标字符串 "a" 的长度为 1。候选必须长度不超过 1,并且从第一个字符开始与目标一致。
候选 "a" 出现 2 次,满足条件。候选 "b" 的首个字符不是 "a",不匹配;候选 "ab" 的长度为 2,超过目标长度 1,也不匹配。
因此只有一个不同的匹配候选 "a",出现次数为 2,输出一行。
输入
abc abd x bc
输出
null
说明
目标字符串为 "abc"。候选 "abd" 在第 3 个字符处不一致:目标为 "c",候选为 "d";候选 "x" 的首个字符不是 "a";候选 "bc" 也不以 "a" 开头,因此都不是 "abc" 的前缀。
没有任何候选字符串满足匹配条件,所以输出 null。
© CodeFun2000 · 使用条款
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册