目录
题目
思路
Code
题目
有一个字符串数组 words 和一个字符串 chars。假如可以用 chars 中的字母拼写出 words 中的某个“单词”(字符串),那么我们就认为你掌握了这个单词。
words 的字符仅由 a-z 英文小写字母组成,例如“abc”
chars 由 az 英文小写字母和“2”组成。其中英文“?”表示万能字符,能够在拼写时当作任意一个英文字母。例如:“?”可以当作“a”等字母
注意: 每次拼写时,chars 中的每个字母和万能字符都只能使用一次
输出词汇表 words 中你掌握的所有单词的个数。没有掌握任何单词,则输出0。输入描述
第一行: 输入数组 words 的个数,记作N。
第二行~第N+1行: 依次输入数组words的每个字符串元素
第N+2行: 输入字符串chars
输出描述
输出一个整数,表示词汇表 words 中你掌握的单词个数
备注
1 ≤ words.length ≤ 100
1 < wordslil.length, chars.length < 100
所有字符串中都仅包含小写英文字母、英文问号示例1:
输入
4
cat
bt
hat
tree
atach??
输出
3说明:可以拼写字符串"cat”、“bt"和"hat”
示例2:
输入
3
helloworld
cloud
welldonehohneyr
输出
2
说明: 可以拼写字符串"hello"和"world"示例3:
输入
3apple
car
window
welldoneapplec?
输出2
说明: 可以拼写字符串"apple"和“car"
思路
1:主要考察hashmap这个数据结构。
2:分别统计words和chars的各个字母的个数,最后逐个对比看是否满足条件即可。
3:还有个巧妙的点在于可以用数组来模拟hashmap,因为毕竟key都是小写字母,可以用ascii 码来替代。
4:其实也是leetcode的原题改过来的,力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
编辑
Code
# coding:utf-8
#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
import functools
import sys
from collections import Counter, defaultdict
import copy
from itertools import permutations
import re
import math
import sys
from queue import Queue
n = int(input())
words = []
for i in range(n):
words.append(input())
chars = input()
char_count_map = [0 for i in range(26)]
maigc_char_count = 0
j=0
while(True):
if(j>=len(chars)):
break
else :
if(chars[j] == '?'):
maigc_char_count +=1
else :
char_count_map[ord(chars[j])-ord('a')] += 1
j+=1
output_count = 0
i=0
while(True):
if(i>=n):
print(output_count)
break
else :
word_count_map = [0 for i in range(26)]
for k in range(len(words[i])):
word_count_map[ord(words[i][k])-ord('a')]+=1
flag = True
temp_count = maigc_char_count
for k in range(26):
if (word_count_map[k] - char_count_map[k] >0):
temp_count -= word_count_map[k] - char_count_map[k]
if(temp_count < 0) :
flag = False
break
if (flag) :
output_count+=1
i+=1
【华为od机试真题Python+JS+Java合集】【超值优惠】:Py/JS/Java合集
【华为od机试真题Python】:Python真题题库
【华为od机试真题JavaScript】:JavaScript真题题库
【华为od机试真题Java】:Java真题题库
【华为od机试真题C++】:C++真题题库
【华为od机试真题C语言】:C语言真题题库
【华为od面试手撕代码题库】:面试手撕代码题库
【华为od机试面试交流群:830285880】