解题代码:
classSolution {
public:
string originalDigits(string s) {
vector<int> count(26,0);
string res;
int a[10];
for(int i=0;i<s.size();i++){
count[s[i]-'a']++;
}
a[0]=count[25];
a[2]=count[22];
a[6]=count[23];
a[8]=count[6];
a[3]=count[7]-count[6];
a[7]=count[18]-count[23];
a[5]=count[21]-a[7];
a[4]=count[5]-a[5];
a[9]=count[8]-a[5]-a[6]-a[8];
a[1]=count[13]-a[7]-a[9]-a[9];
for(int i=0;i<=9;i++){
for(int j=1;j<=a[i];j++)
res+=to_string(i);
}
return res;
}
};
解题思路:
题目给出一串数字的英文无序字符串,要求把它转换成对应的数字并按升序排出来。因此可以按照0~9各个数字英文表示的特性来进行判断。首先,0,2,6,8四个数字有着其他数字没有的字母,分别是z,w,x,g,根据这四个字母的数量可判断出他们的个数。然后3和8有共同字母h,6和7有共同字母s,5和7有共同字母s,4和5有共同字母f,9个5,6,8有共同字母i,1和7,9有共同字母n(其中9有两个n),根据以上可分别判断出各个数字个数最终得到结果字符串。