#OD098. 字符串解密

字符串解密

题目解析和算法源码

华为OD机试 - 字符串解密(Java & JS & Python & C & C++)_伏城之外的博客-CSDN博客

题目描述

给定两个字符串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

用例1

输入

123admyffc79pt
ssyy

输出

pt

说明

将输入字符串1里的加扰子串“123ad”、“ffc79”去除后得到有效子串序列:"my"、"pt",其中"my"里不同字母的数量为2(有‘m’和'y'两个不同字母),“pt”里不同字母的数量为2(有'p'和't'两个不同字母);输入字符串2里不同字母的数量为2(有‘s’和'y'两个不同字母)。

可得到最终输出结果为“pt”,其不同字母的数量最接近与“ssyy”里不同字母的数量的同时字典序最大。

用例2

输入

123admyffc79ptaagghi2222smeersst88mnrt
ssyyfgh

输出

mnrt

说明

将输入字符串1里的加扰子串“123ad”、“ffc79”、"aa"、"2222"、"ee"、"88"去除后得到有效子串序列:“my”、“pt”、“gghi”、"sm"、“rsst”、"mnrt";输入字符串2里不同字母的数量为5(有's'、'y'、'f'、'g'、'h'5个不同字母)。可得到最终输出结果为“mnrt”,其不同字母的数量(为4)最接近于“ssyyfgh”里不同字母的数量,其他有效子串不同字母的数量都小于“mnrt”。

用例3

输入

abcmnq
rt

输出

Not Found

说明

将输入字符串1里的加扰子串“abc”去除后得到有效子串序列:“mnq”;输入字符串2里不同字母的数量为2(有'r'、't'两个不同的字母)。可得到最终的输出结果为“Not Found”,没有符合要求的有效子串,因有效子串里的不同字母的数量(为3),大于输入字符串2里的不同字母的数量。