题目
给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。
注意:
输入只包含小写英文字母。
输入保证合法并可以转换为原始的数字,这意味着像 “abc” 或 “zerone” 的输入是不允许的。
输入字符串的长度小于 50,000。
示例 1:
输入: “owoztneoer”
输出: “012” (zeroonetwo)
示例 2:
输入: “fviefuro”
输出: “45” (fourfive)
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reconstruct-original-digits-from-english
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
这道题挺有意思,我直接在纸上写下了0~9的英语,先找哪些字母和数字是唯一对应的,比如z只有0有,然后把0中含有的e,r,o的个数从字符串中减掉,再把0排除掉,以此类推可以推出每一个数字的个数都可以由一个字符的个数确定。
遇到的问题
1,有点麻烦
2,本来想使用str.count,但是用了之后会报超时的错误,没有深究,就手写了。
代码
class Solution:
def originalDigits(self, s: str) -> str:
countz=countw=countu=countf=countx=counts=counto=countr=countg=counti=0
for i in s:
if i=='z':
countz=countz+1
elif i=='w':
countw=countw+1
elif i=='u':
countu=countu+1
elif i=='f':
countf=countf+1
elif i=='x':
countx=countx+1
elif i=='s':
counts=counts+1
elif i=='o':
counto=counto+1
elif i=='r':
countr=countr+1
elif i=='g':
countg=countg+1
elif i=='i':
counti=counti+1
countr=countr-countz
counto=counto-countz-countw-countu
countf=countf-countu
countr=countr-countu
counts=counts-countx
counti=counti-countf-countx-countg
out="0"*countz+"1"*counto+"2"*countw+"3"*countr+"4"*countu+"5"*countf+"6"*countx+"7"*counts+"8"*countg+"9"*counti
print(out)
return out
结果
通过 112 ms 14.4 MB
结论
还是太菜,可以看看其他人有没有更好的解题方法