PAT乙 1039 到底买不买 (GO)
思路:
- 用字符串读入,转成字节数组
- 循环把目标数组读入到map
- 再一次循环小红想做的数组,把小红想要的颜色依次去map中匹配,看是否存在,不存在则缺少的变量++
- 最后查看缺少的变量是否>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))
}
}