423. 从英文中重建数字
打一个表,独一无二字母的单词放前面 防止后面把前面的字母用了,然后统计s中各个字母的个数,然后挨个判断呗, 记得判断成功的单词再判断一遍
class Solution:
def originalDigits(self, s: str) -> str:
litter = ["zero","six","eight","two","seven","five","four","three","one","nine"]
num = [0,6,8,2,7,5,4,3,1,9]
count = Counter(s)
lis=[]
i = 0
while i < 10:
flag = 1
for a in litter[i]:
if count[a] == 0:
flag =0
break
if flag:
lis.append(num[i])
for a in litter[i]:
count[a] -=1
else :
i +=1
lis =sorted(lis)
str1="".join([str(_) for _ in lis])
return str1
简易代码 如下 取巧
class Solution:
def originalDigits(self, s: str) -> str:
cnt = Counter(s)
return "0" * cnt["z"] + \
"1" * (cnt["o"] - cnt["z"] - cnt["u"] - cnt["w"]) + \
"2" * cnt["w"] + \
"3" * (cnt["r"] - cnt["z"] - cnt["u"]) + \
"4" * cnt["u"] + \
"5" * (cnt["v"] - cnt["s"] + cnt["x"]) + \
"6" * cnt["x"] + \
"7" * (cnt["s"] - cnt["x"]) + \
"8" * (cnt["t"] - cnt["w"] - cnt["r"] + cnt["z"] + cnt["u"]) + \
"9" * ((cnt["n"] - cnt["s"] + cnt["x"] - cnt["o"] + cnt["z"] + cnt["u"] + cnt["w"]) // 2)
1287. 有序数组中出现次数超过25%的元素
哈希表 扫一遍存一下 扫的过程中如果发现值大于0.25倍的长度 那直接返回
class Solution:
def findSpecialInteger(self, arr: List[int]) -> int:
dic = defaultdict(int)
leng = len(arr)
for num in arr:
dic[num] +=1
if dic[num] >leng*0.25:
return num
return -1