一. 🌟 题目描述
给定两个字符串 s1 和 s2 和正整数 K,其中 s1 长度为 n1,s2 长度为 n2,在 s2 中选一个子串,满足
该子串长度为 n1+k
该子串中包含 s1 中全部字母
该子串每个字母出现次数不小于 s1 中对应的字母
我们称 s2 以长度 k 几余覆盖 s1,给定 s1,s2,k,求最左侧的 s2 以长度 k 几余覆盖 s1 的子串的首个元素的下标如果没有返回-1。
二. 🌟 输入描述
输入三行,第一行为 s1,第二行为 s2,第三行为 k,s1 和 s2 只包含小写字母
三. 🌟 输出描述
最左侧的 s2 以长度 k 几余覆盖 s1 的子串首个元素下标,如果没有返回-1。
用例
四. 🌟 题目解析
本题的难点在于如何计算 s2 选中子串是否能够覆盖住 s1,即 s2 选中子串的中的对应字符个数都大于 s1 中每个字符个数。
五. 🌟 Java玩法
下面统计 s1 中各字符数量时,容器没有使用 HashMap,因为后期获取和处理 HashMap 中数据时比较麻烦,而是利用 s1 中所有字符都是小写字母