2023-08-20:用go语言写算法。给定一个由'W'、'A'、'S'、'D'四种字符组成的字符串,长度一定是4的倍数,
你可以把任意连续的一段子串,变成'W'、'A'、'S'、'D'组成的随意状态,
目的是让4种字符词频一样。
返回需要修改的最短子串长度。
完美走位问题。
输出:2。
解释:我们可以把前面的 "QQ" 替换成 "ER"。
来自华为OD。
来自左程云。
答案2023-08-20:
算法步骤:
1.定义辅助函数,用于判断当前字符词频是否能使四种字符的词频相同。
2.初始化数组保存每个字符的对应值('Q': 0, 'W': 1, 'E': 2, 'R': 3)和数组记录每个字符的词频。
3.使用双指针来搜索每个可能的子串。外层循环控制左指针,内层循环控制右指针。
4.当当前子串不满足要求时,右指针向右移动并更新词频数组,直到子串满足要求。
5.当子串满足要求时,更新当前最短子串长度。
6.左指针向右移动并更新词频数组,继续搜索可能的子串。
7.返回最短子串长度。
总的时间复杂度为O(n),其中n是字符串的长度。
总的额外空间复杂度为O(1),因为只使用了固定大小的数组和常数个变量。
go完整代码如下:
在这里插入图片描述rust完整代码如下:
在这里插入图片描述c++完整代码如下:
在这里插入图片描述c完整代码如下:
在这里插入图片描述
领取专属 10元无门槛券
私享最新 技术干货