273. 整数转换英文表示
没啥看的必要。。
可读性差(变量名瞎取)
就比较烦的模拟
class Solution {
public:
vector<string> ge={"","One","Two","Three","Four","Five","Six","Seven","Eight","Nine"};
vector<string> ershi={"Ten","Eleven","Twelve","Thirteen","Fourteen","Fifteen","Sixteen","Seventeen","Eighteen","Nineteen",};
vector<string> shi={"0","1","Twenty","Thirty","Forty","Fifty","Sixty","Seventy","Eighty","Ninety"};
vector<string> wei={"","","Thousand","Million","Billion"};
vector<int>getnum(int num){
vector<int>res;
string sn=to_string(num);
int t=(3-sn.size()%3)%3;
sn=string(t,'0')+sn;
for(int i=0;i<sn.size();i+=3){
string tmp=sn.substr(i,3);
res.push_back(atoi(tmp.c_str()));
}
return res;
}
string get3(int n){
string res;
int n1=n/100,n3=n%10,n2=n/10%10;
if(n1)res+=ge[n1]+" Hundred ";
if(n2){
if(n2==1 && n3==0)res +="Ten ";
if(n2==1 && n3!=0)res+=ershi[n3]+" ";
if(n2>1)res+=shi[n2]+" ";
}
if(n3){
if(n2!=1)res +=ge[n3]+" ";
}
return res;
}
string numberToWords(int num) {
if(!num)return "Zero";
vector<int>vec=getnum(num);
int n=vec.size();
string res;
for(int i=0;i<n;i++){
res+=get3(vec[i]);
if(vec[i])res +=wei[n-i]+" ";
}
while(res.back()==' ')res.pop_back();
return res;
}
};