题目链接:https://leetcode.com/problems/reconstruct-original-digits-from-english/
Given a non-empty string containing an out-of-order English representation of digits 0-9
, output the digits in ascending order.
Note:
- Input contains only lowercase English letters.
- Input is guaranteed to be valid and can be transformed to its original digits. That means invalid inputs such as "abc" or "zerone" are not permitted.
- Input length is less than 50,000.
Example 1:
Input: "owoztneoer" Output: "012"
Example 2:
Input: "fviefuro" Output: "45"
class Solution{
public:
string originalDigits(string s)
{
vector<int> bucket(26,0);
vector<int> digits(10,0);
for(auto digit:s)
bucket[digit-'a']++;
digits[0]=bucket['z'-97];
digits[2]=bucket['w'-97];
digits[4]=bucket['u'-97];
digits[6]=bucket['x'-97];
digits[8]=bucket['g'-97];
digits[1]=bucket['o'-97]-digits[0]-digits[2]-digits[4];
digits[3]=bucket['r'-97]-digits[0]-digits[4];
digits[5]=bucket['f'-97]-digits[4];
digits[7]=bucket['s'-97]-digits[6];
digits[9]=(bucket['n'-97]-digits[1]-digits[7])/2;
string result="";
for(int i=0;i<digits.size();i++)
{
if(digits[i]!=0)
{
int j=digits[i];
while(j>0)
{
result+=to_string(i);
j--;
}
}
}
return result;
}
};