【备战秋招】每日一题:2023.05.11-华为od-第一题-冗余覆盖

为了更好的阅读体检,可以查看我的算法学习网
在线评测链接:P1290

题目描述

黑客们喜欢在网络上攻击别人的网站,这样可以掠夺他人的私有资产,对他人的财产安全造成巨大危害。所以网络安全专家必须加强防范的手段,不断提升密码的强度。

塔子哥是一个密码破解专家,这一天塔子哥想出了一种名为“冗余覆盖”的密码加密算法。

这是一种基于字符串匹配的加密算法,简单来说就是把密钥字符串 S 1 S1 S1 增加 k k k 个冗余字符然后打乱以后(可能不打乱)加入到一个明文字符串中得到密文字符串 S 2 S2 S2 ,这个过程叫做 S 2 S2 S2 以长度 k k k 冗余覆盖 S 1 S1 S1

解读这串密码的方法就是先通过密钥 [ S 1 , k ] [S1,k] [S1,k] 去删除 S 2 S2 S2 中的冗余子串,这个冗余子串中一定包含 S 1 S1 S1 中的所有字符,且每个字符的出现次数一定大于等于在 S 1 S1 S1 中的次数。现在需要你编写一个破译系统,它只要根据给定的 S 1 S1 S1 S 2 S2 S2 k k k ,找出最左侧的 S 2 S2 S2 的冗余覆盖 S 1 S1 S1 的子串的首个元素的下标,如果没有就返回 − 1 −1 1

这样就可以从 S 2 S2 S2 中删除冗余子串,并且知道这段密码在说什么。

输入描述

输入第一行为 S 1 S1 S1 ,输入第二行为 S 2 S2 S2 ,输入第三行为 k k k S 1 S1 S1 S 2 S2 S2 只包含小写字母.

输出描述

输出最左侧的 S 2 S2 S2 以长度 k k k 冗余覆盖 S 1 S1 S1 的子串首个元素下标,如果没有就返回 − 1 -1 1

∣ S 1 ∣ , ∣ S 2 ∣ ≤ 1 e 5 , ∣ S 1 ∣ + k ≤ ∣ S 2 ∣ |S_1|,|S_2| \leq 1e5 , |S_1| + k \leq |S_2| S1,S21e5,S1+kS2

样例1

样例输入

ab
cbaaab
1

样例输出

0

样例解释

可以发现最左端的冗余子串是 “cba”,子串中“a”的出现次数为1,“b”的出现次数为1,符合条件。

样例2

样例输入

od
funcode
2

样例输出

2

样例解释

可以发现最左端的冗余子串是 “ncod”,子串中“o”的出现次数为1,“d”的出现次数为1,符合条件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

塔子哥学算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值