[华为OD 004] 完美走位

题目描述

输入一个长度为4的倍数的字符串Q,字符串中仅包含WASD四个字母。
将这个字符串中的连续子串用同等长度的仅包含WASD的字符串替换,如果替换后整个字符串中WASD四个字母出现的频数相同, 那么我们称替换后的字符串是“完美走位”。求子串的最小长度。如果输入字符串已经平衡则输出0。

输入: 一行字符表示给定的字符串S
数据范围: 1<=n<=105且n是4的倍数,字符串中仅包含WASD四个字母。
输出: 整数表示答案

样例输入输出

示例1

输入: WASDAASD
输出: 1
说明: 将第二个A替换为W,即可得到完美走位。

示例2

输入: AAAA
输出: 3
说明: 将其中三个连续的A替换为WSD,即可得到完美走位

解题思路

使用双指针.

示例代码

func q004(input string) int {
	charCount := make(map[byte]int)
	charCount['W'] = 0
	charCount['A'] = 0
	charCount['S'] = 0
	charCount['D'] = 0
	for i := range input {
		charCount[input[i]]++
	}

	num := charCount[input[0]]
	needCal := false
	for _, c := range charCount {
		if c != num {
			needCal = true
		}
	}

	if !needCal {
		return 0
	}

	left := 0
	right := 0
	target := len(input)
	charCount[input[right]]--
	for left < len(input) {
		maxCount := 0
		for _, c := range charCount {
			maxCount = maxInt(maxCount, c)
		}

		lackCharNum := 0
		for _, c := range charCount {
			lackCharNum += maxCount - c
		}

		length := right - left + 1
		completeNum := length - lackCharNum
		if completeNum >= 0 && completeNum%4 == 0 {
			target = minInt(target, length)
			charCount[input[left]]++
			left++
		} else {
			right++
			if right >= len(input) {
				break
			}
			charCount[input[right]]--
		}
	}

	return target
}
华为OD 004是一款完美走位的产品。 首先,华为OD 004采用了最先进的定位技术,能够快速准确地确定用户的位置,并提供导航功能。无论是步行、骑车还是开车,在城市中还是在乡村中,华为OD 004都能为用户提供准确的路线规划。同时,它还支持实时交通信息更新,能够避开拥堵路段,让用户快速到达目的地。 其次,华为OD 004具备强大的搜索功能,用户可以通过语音或手动输入关键词,快速找到周边的餐厅、酒店、商场、加油站等地点。而且,它还支持根据用户的喜好和习惯,推荐个性化的搜索结果,让用户能够更好地满足自己的需求。 此外,华为OD 004还具备实时天气信息查询功能,用户可以通过它了解当地的天气情况,从而合理安排出行计划。同时,它还提供了气温、湿度、风力等详细信息,让用户在外出前能够根据天气情况做好准备。 最后,华为OD 004还具备多种实用功能,比如闹钟、计算器、备忘录等,方便用户在使用导航的同时进行其他操作。同时,它还支持与其他设备的连接,比如与车载导航系统、智能手表等设备的互动,让用户的使用经验更加方便和无缝。 综上所述,华为OD 004是一款功能强大、操作便捷、走位完美的导航产品。无论在城市中还是在乡村中,它都能为用户的出行提供可靠的帮助,并且能够满足用户多样化的需求。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值