给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9
。按升序输出原始的数字。
注意:
- 输入只包含小写英文字母。
- 输入保证合法并可以转换为原始的数字,这意味着像 "abc" 或 "zerone" 的输入是不允许的。
- 输入字符串的长度小于 50,000。
示例 1:
输入: "owoztneoer"
输出: "012" (zeroonetwo)
示例 2:
输入: "fviefuro"
输出: "45" (fourfive)
C++
class Solution {
public:
string originalDigits(string s)
{
map<char,int> tmp;
int n=s.length();
for(int i=0;i<n;i++)
{
tmp[s[i]]++;
}
map<char,int> vec;
int num;
if(tmp['z'])
{
num=tmp['z'];
vec['0']=num;
tmp['e']-=num;
tmp['r']-=num;
tmp['o']-=num;
tmp['z']=0;
}
if(tmp['w'])
{
num=tmp['w'];
vec['2']=num;
tmp['t']-=num;
tmp['o']-=num;
tmp['w']=0;
}
if(tmp['x'])
{
num=tmp['x'];
vec['6']=num;
tmp['s']-=num;
tmp['i']-=num;
tmp['x']=0;
}
if(tmp['u'])
{
num=tmp['u'];
vec['4']=num;
tmp['f']-=num;
tmp['o']-=num;
tmp['r']-=num;
tmp['u']=0;
}
if(tmp['o'])
{
num=tmp['o'];
vec['1']=num;
tmp['n']-=num;
tmp['e']-=num;
tmp['o']=0;
}
if(tmp['f'])
{
num=tmp['f'];
vec['5']=num;
tmp['i']-=num;
tmp['v']-=num;
tmp['e']-=num;
tmp['f']=0;
}
if(tmp['v'])
{
num=tmp['v'];
vec['7']=num;
tmp['s']-=num;
tmp['n']-=num;
tmp['e']-=2*num;
tmp['v']=0;
}
if(tmp['r'])
{
num=tmp['r'];
vec['3']=num;
tmp['t']-=num;
tmp['h']-=num;
tmp['e']-=2*num;
tmp['r']=0;
}
if(tmp['g'])
{
num=tmp['g'];
vec['8']=num;
tmp['n']-=num;
tmp['i']-=num;
tmp['h']-=num;
tmp['t']-=num;
tmp['g']=0;
}
if(tmp['i'])
{
vec['9']=tmp['i'];
}
string res="";
for(auto it:vec)
{
for(int i=0;i<it.second;i++)
{
res+=it.first;
}
}
return res;
}
};
python
class Solution:
def originalDigits(self, s):
"""
:type s: str
:rtype: str
"""
#dic={}
dic={'e':0,'f':0,'g':0,'h':0,'i':0,'n':0,'o':0,'r':0,'s':0,'t':0,'u':0,'v':0,'w':0,'x':0,'z':0}
n=len(s)
a=[0 for i in range(10)]
for i in range(0,n):
#if s[i] not in dic:
if dic[s[i]]==0:
dic[s[i]]=1
else:
dic[s[i]] += 1
for i in range(0,n):
if s[i]=='z':
a[0] += 1
dic['e'] -= 1
dic['r'] -= 1
dic['o'] -= 1
if s[i]=='w':
a[2] += 1
dic['t'] -= 1
dic['o'] -= 1
if s[i]=='u':
a[4] += 1
dic['f'] -= 1
dic['o'] -= 1
dic['r'] -= 1
if s[i]=='x':
a[6] += 1
dic['s'] -= 1
dic['i'] -= 1
if s[i]=='g':
a[8] += 1
dic['e'] -= 1
dic['i'] -= 1
dic['h'] -= 1
dic['t'] -= 1
a[1]=dic['o']
a[3]=dic['t']
a[5]=dic['f']
a[7]=dic['s']
a[9]=dic['i']-dic['f']
res=''
for i in range(0,10):
res += str(i)*a[i]
return res