PAT乙 1039 到底买不买 (GO)

PAT乙 1039 到底买不买 (GO)
思路:

  1. 用字符串读入,转成字节数组
  2. 循环把目标数组读入到map
  3. 再一次循环小红想做的数组,把小红想要的颜色依次去map中匹配,看是否存在,不存在则缺少的变量++
  4. 最后查看缺少的变量是否>0
package main

import (
	"fmt"
)

func  main()  {
	var s1,s2 string
	var lack int
	target := make(map[byte]int, 1000)
	_, _ = fmt.Scanf("%s", &s1)
	_, _ = fmt.Scanf("%s", &s2)
	s1Str := []byte(s1)
	s2Str := []byte(s2)
	for i:=0; i<len(s1Str); i++ {
		target[s1Str[i]]++
	}
	for j:=0; j<len(s2Str); j++ {
		if _, ok := target[s2Str[j]]; ok {
			if target[s2Str[j]] > 0 {
				target[s2Str[j]]--
			} else {
				lack++
			}
		} else {
			lack++
		}
	}
	if lack > 0 {
		fmt.Printf("No %d\n", lack)
	} else {
		fmt.Printf("Yes %d\n", len(s1Str)-len(s2Str))
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值