题目
给你一个字符串 s ,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9)。按 升序 返回原始的数字。
输入:s = “owoztneoer”
输出:“012”
输入:s = “fviefuro”
输出:“45”
代码
class Solution {
public:
string originalDigits(string s) {
string name[] = {
"zero", "one", "two", "three", "four", "five",
"six", "seven", "eight", "nine"
};
int ord[]={0,8,3,2,6,4,5,1,7,9};
unordered_map<char, int> cnt;
for(auto c:s) cnt[c]++;
string res;
for(int x:ord)
{
while(true)
{
bool flag=true;
for(auto c:name[x])
if(!cnt[c]){
flag=false;
break;
}
if(flag)
{
res+=to_string(x);
for(auto c: name[x]) cnt[c]--;
}
else
break;
}
}
sort(res.begin(), res.end());
return res;
}
};