题目描述
给定两个字符串string1和string2。
string1是一个被加扰的字符串。
string1由小写英文字母(’a’’z’)和数字字符(’0’’9’)组成,而加扰字符串由’0’’9’、’a’’f’组成。
string1里面可能包含0个或多个加扰子串,剩下可能有0个或多个有效子串,这些有效子串被加扰子串隔开。
string2是一个参考字符串,仅由小写英文字母(’a’~’z’)组成。
你需要在string1字符串里找到一个有效子串,这个有效子串要同时满足下面两个条件:
(1)这个有效子串里不同字母的数量不超过且最接近于string2里不同字母的数量,即小于或等于string2里不同字母的数量的同时且最大。
(2)这个有效子串是满足条件(1)里的所有子串(如果有多个的话)里字典序最大的一个。
如果没有找到合适条件的子串的话,请输出”Not Found”
输入描述
input_string1
input_string2
输出描述
output_string
用例
| 输入 | 123admyffc79pt ssyy |
| 输出 | pt |
| 说明 | 将输入字符串1里的加扰子串“123ad”、“ffc79”去除后得到有效子串序列:"my"、"pt",其中"my"里不同字母的数量为2(有‘m’和'y'两个不同字母),“pt”里不同字母的数量为2(有'p'和't'两个不同字母);输入字符串2里不同字母的数量为2(有‘s’和'y'两个不同字母)。 可得到最终输出结果为“pt”,其不同字母的数量最接近与“ssyy”里不同字母的数量的同时字典序最大。 |
| 输入 | 123admyffc79ptaagghi2222smeersst88mnrt ssyyfgh |
| 输出 | mnrt |
| 说明 | 将输入字符串1里的加扰子串“123ad”、“ffc79”、"aa"、"2222"、"ee"、"88"去除后得到有效子串 |

本文介绍华为OD机考中的字符串解密问题,涉及C++、JavaScript、Java和Python四种语言的解题思路。给定两个字符串,需要在加扰字符串中找到一个有效子串,该子串不同字母数量最接近且小于等于参考字符串,并在所有满足条件的子串中字典序最大。文章提供解题过程和代码实现。
订阅专栏 解锁全文
7044

被折叠的 条评论
为什么被折叠?



