Re: [閒聊] 每日leetcode

作者: enmeitiryous (enmeitiryous)   2024-08-07 13:43:48
273. Integer to English Words
題目:
給你一個2^32-1到0之間的一個整數,把他轉換成英文描述法,例如123->One Hundred
Twenty Three,以及101->One Hundred One,不是口語會說的One hundred and One
思路:利用遞迴的方式處理,分別處理該數對10^9的商數、餘數,以此類推,概念不難
但通過率很低(31.3%),可能是因為很多人跟我一樣打錯字?
void he_lper(int nums,string &s,vector<string>& filist,vector<string>&
tonintenn,vector<string>& tenlist){
if(nums>=(1000000000)){
s+=filist[(nums/(1000000000))];
s+=" Billion";
if(nums%(1000000000)){
s+=" ";
he_lper((nums%(1000000000)),s,filist,tonintenn,tenlist);
}
}
else if(nums>=(1000000)){
he_lper((nums/(1000000)),s,filist,tonintenn,tenlist);
s+=" Million";
if(nums%(1000000)){
s+=" ";
he_lper((nums%(1000000)),s,filist,tonintenn,tenlist);
}
}
else if(nums>=(1000)){
he_lper((nums/(1000)),s,filist,tonintenn,tenlist);
s+=" Thousand";
if(nums%(1000)){
s+=" ";
he_lper((nums%(1000)),s,filist,tonintenn,tenlist);
}
}
else if(nums>=(100)){
s+=filist[(nums/100)];
s+=" Hundred";
if(nums%(100)){
s+=" ";
he_lper((nums%(100)),s,filist,tonintenn,tenlist);
}
}
else if(nums>=10){
if((nums/10)>1){
s+=tenlist[(nums/10)];
if((nums%(10))){
s+=" ";
he_lper((nums%(10)),s,filist,tonintenn,tenlist);
}
}
else{
s+=tonintenn[(nums-10)];
return;
}
}
else{
if(nums==0){
if(s==""){
s+="Zero";
}
}
else{
if(s!=""){
s+=filist[nums];
}
else{
s+=filist[nums];
}
}
}
}
string numberToWords(int num) {
vector<string> fir_dig={"Zero","One", "Two", "Three", "Four", "Five",
"Six", "Seven", "Eight", "Nine"};
vector<string> sec_dig={"Zero", "Ten", "Twenty", "Thirty", "Forty",
"Fifty", "Sixty", "Seventy", "Eighty", "Ninety"};
vector<string> ten_pate={"Ten", "Eleven", "Twelve", "Thirteen",
"Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"};
string ans="";
he_lper(num,ans,fir_dig,ten_pate,sec_dig);
return ans;
}
作者: oin1104 (是oin的說)   2024-08-07 13:52:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com